[英]Order a list in Flutter
在 ListView(或类似小部件)上排序列表的最佳方法是什么?
我正在使用table_calendar在日历上显示事件,因此我需要按日期对一天中的不同事件进行排序(已为每个事件创建了此字段)。
final items = List.generate(10, (index) => index + 1);
void order() {
final ascending = items[0] > items[1];
setState(() {
if (ascending) {
items.sort();
} else {
items.sort((a, b) => b - a);
}
});
}
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: items.length + 1,
itemBuilder: (context, index) {
if (index == items.length) {
return FlatButton(
onPressed: order,
child: Text("Order"),
);
}
return Center(child: Text("Entry ${items[index]}"));
});
}
下面的示例显示了如何按升序或降序对日期列表进行排序:
final list = [
DateTime.now(),
DateTime.now().subtract(Duration(days: 1)),
DateTime.now().subtract(Duration(days: 2)),
DateTime.now().subtract(Duration(days: 3)),
];
//Order By Descending
list.sort((a, b) => a.isAfter(b) ? -1 : 1);
//Order By Ascending
list.sort((a, b) => a.isBefore(b) ? -1 : 1);
for (var item in list) {
print(item);
}
sort 可用于任何集合,用于比较日期字段的事件列表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.