我遇到过类似的帖子,但没有一个解决我的问题。
我有一个对象列表,我希望根据lastViewDate
值从最新到最旧排序,该值可以为null/empty
下面的情况使我的应用崩溃,因为它显然需要lastVenueDate
字段的值myList.sort((a, b) => b.lastVenueViewDate!.compareTo(a.lastVenueViewDate!));
我试图更新我的代码,但卡住了。myList.sort((a, b) => b.lastVenueViewDate == null ? <what to do here> : b.lastVenueViewDate.compareTo(a.lastVenueViewDate));
3条答案
按热度按时间ycggw6v21#
为了添加更具体的代码,如果你想用nulls对所有的DateTime进行 before 排序,请使用类似这样的代码:
若要在 * 之后设置空值,请将“1”更改为“99999”。
它使用了collection包中的方便的sortBy,这是一个第一方的很酷的包。
(And是的,一个完整的.compareBy可以专门处理空值,但这更容易理解。
fgw7neuy2#
常见的做法是将空值与定义的值进行比较,在列表中的第一个或最后一个进行排序。所以在写
what to do here
的地方返回-1或1。如果a和b都是null,你可以返回0。rhfm7lfc3#
检查日期的值后,如果为空
可以设置任意默认值。
以便可以将其与列表中的其他值进行比较。
这可以解决你的问题