【问题标题】:How to sort list by sub list value in flutter?如何在颤动中按子列表值对列表进行排序?
【发布时间】:2020-10-16 06:17:13
【问题描述】:

我是一名 Flutter 开发人员,我希望帮助解决这个问题

我有一个数组,我想对其进行排序

下面是这个列表的结构:


List myList = [
  {
     'name': 'Max',
     'messages': [
       {
        'time': 133459086,
        'text': 'Hello World!',  
       }
     ],
  },
  {
     'name': 'Wax',
     'messages': [
       {
        'time': 133459083,
        'text': 'Hello !',  
       }
     ],
  },
];

我想使用消息中的时间值对 myList 进行降序排序。

注意:messages 数组可能为空,因此它可能会抛出错误状态为无元素的错误。

请帮帮我,

谢谢,

【问题讨论】:

  • 请修正您的代码,使其具有有效的对象结构。现在“消息”无效。
  • 抱歉修复了,
  • 你有什么尝试吗?

标签: arrays list sorting flutter dart


【解决方案1】:

该数据目前无效。

如果messages 节点是一个数组,那么它的项需要被包装在对象中,例如:

'messages': [
  {
    'time': 133459089,
    'text': 'Hello!'
  }
]

如果是这样,您需要知道messages 中是否只有一个消息项,或者是否可以有多个。

【讨论】:

  • 答案是什么?
【解决方案2】:

对不起,我找到了答案:

myList.sort((a,b) => b['messages'].isNotEmpty ? b['messages'].last['time'].compareTo(a['messages'].isNotEmpty ? a['messages'].last['time'] : 0 ) : 0,);

【讨论】:

    【解决方案3】:

    你可以试试这样的:

    var list = myList..sort((b, a) => a['messages']['time'].compareTo(b['messages']['time']));
    
    print(list);
    

    【讨论】:

    • 对不起,messages 是一个数组
    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 2020-10-19
    • 1970-01-01
    • 2010-11-18
    • 2020-10-03
    • 1970-01-01
    • 2014-04-03
    • 2019-11-21
    相关资源
    最近更新 更多