我有一个项目列表,其中包括在用户输入时捕获的自定义优先级(最高、高、正常)和 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 卡片生成器之前先按优先级(最高、高、正常)对列表进行排序,然后按降序排列日期时间?
答案 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}');