flutter 按日期排序arraylist

flutter Sorting arraylist by Date

在我的 streamBuilder 中,我的数组列表包含格式为 (dd-MM-yyyy) 的日期。 我想按升序排列列表。 获取Datasnapshot后在StreamBuilder中使用的代码

 Map<dynamic, dynamic> data = snap.data.snapshot.value;

              List item = [];
              data.forEach(
                  (index, data) => item.add(
                      {"key": index, ...data}
                      )
              );
              item..sort((a,b)=>a['key'].compareTo(b['key']));

我期待结果 16-06-2020 17-06-2020 18-06-2020 19-06-2020 22-06-2020 2020-04-07

我得到的结果是 04-07-2020 16-06-2020 17-06-2020 18-06-2020 19-06-2020 22-06-2020

您需要将 String 解析为 DateTime。由于 DateTime parse() 方法不接受您提供的格式的字符串,您可以这样做:

List<String> strings = ['04-07-2020', '17-06-2020', '16-06-2020', '19-06-2020', '18-06-2020', '22-06-2020'];
List<DateTime> dateTimes = [];
  
strings.forEach((string) {
  var splitted = string.split('-');
  var day = splitted[0];
  var month = splitted[1];
  var year = splitted[2];
  var formatted = '$year-$month-$day';
  dateTimes.add(DateTime.parse(formatted));
});
  
dateTimes.sort((a, b) => a.compareTo(b));

根据您的结构调整它!

在 Firebase 中将数据存储为时间戳会更简单,然后您可以按此时间戳对其进行排序。 如果您需要将日期格式化为字符串 (dd-MM-yyyy),您只需将其解析为 Datetime 并使用 Intl-Package 将其转换为格式化的字符串。