我想按日期对一个列表进行排序,该列表包含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/