繁体   English   中英

在 Flutter 中订购列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM