list - 在Flutter/Dart中对具有相同属性(时间戳)的不同对象的列表进行排序

标签 list sorting flutter dart timestamp

我想按日期对一个列表进行排序,该列表包含2个不同的对象(ClassA和ClassB),具有相同的属性时间戳“createdAt”。我已经尝试过这种解决方案:

_list.sort((a, b) => a.createdAt.compareTo(b.createdAt));

仅当_list包含单一类型的对象(ClassA或ClassB)但不能同时包含两种类型时,它才起作用。

有人有主意吗?
谢谢。

解决方案:使用createdAt属性创建一个抽象类,并在childs上实现它

最佳答案

我认为问题在于您有一个带有动态类型的列表。因此,我建议创建一个包含ClassA和ClassB信息的抽象类,以便dart编译器理解。

List<Parent> _list = [
  ClassA(DateTime(2020, 04, 04)),
  ClassB(DateTime(2020, 03, 04)),
  ClassA(DateTime(2020, 02, 04)),
  ClassB(DateTime(2020, 01, 04))
];

_list.sort((a,b)=> b.createdAt.compareTo(a.createdAt));

abstract class Parent {
  DateTime createdAt;
}

class ClassA implements Parent {
  DateTime createdAt;
  ClassA(this.createdAt);
}

class ClassB implements Parent {
  DateTime createdAt;
  ClassB(this.createdAt);
}

这也是我可以对列表进行排序的CodePen。

https://codepen.io/md-weber/pen/RwWaMgz

关于list - 在Flutter/Dart中对具有相同属性(时间戳)的不同对象的列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61266886/

相关文章:

sorting - Hive 不区分大小写的字母排序

python - 统一 python 列表中的所有对

python-3.x - 如何按二进制表示中的数量对二进制数组进行排序

python - 从元组的元组创建列表

sorting - 如何对 EXTJS 中的日期列进行排序

flutter - 如果 bool 列表中的所有值都为 true,则将变量设置为 true 的最佳方法

android - 在空上调用了 '_debugTypesAreRight'方法

linux - Fedora 上的 Flutter 错误 - 下载的可执行文件无法在主机上执行

r - 在 for 循环中提取数据并将其 append 到新数据集

python - 在 Python 的四循环中使用 readline() 时,如何忽略 .csv 文件中的空列?