按自定义属性排序列表,然后按 DateTime 属性排序

时间:2021-02-24 22:18:35

标签: flutter dart

我有一个项目列表,其中包括在用户输入时捕获的自定义优先级(最高、高、正常)和 DateTime 属性。

示例:

Entry(
  title: 'Hello!',
  author: 'Plato',
  notes: 'Are you working as hard as you can?',
  mlPriority: MlPriority.Highest,
  date: DateTime(2021, 2, 23, 12, 00),
),

我正在通过地图将列表传递给 ListView 以构建卡片。

ListView(
  padding: const EdgeInsets.all(8),
  children: <Widget>[
    Container(
      child: Column(
        children: theReviewItems.map((e) {
          ...some if statements...Return CustomCardBuilderWidget

如何在传递到我的 .map / Widget 卡片生成器之前先按优先级(最高、高、正常)对列表进行排序,然后按降序排列日期时间?

1 个答案:

答案 0 :(得分:1)

示例

final priorityMap = {
    MlPriority.Normal: 1,
    MlPriority.High: 2,
    MlPriority.Highest: 3,
  };
  
  // Sort by priority
  theReviewItems.sort((e1, e2) => priorityMap[e1.mlPriority] > priorityMap[e2.mlPriority] ? -1 : 1);
  
  // Sort by date
  theReviewItems.sort((e1, e2) {
    if (e1.mlPr
        iority == e2.mlPriority) return e2.date.compareTo(e1.date);
    return 0;
  });

// Print result
for (final item in theReviewItems) print('${item.mlPriority}: ${item.date}');
相关问题