我有一个对象列表,在循环后,我尝试按给定的ISO 8601格式favouriteDateTime对最终列表进行排序:2022-12- 16 T10:46:55.551Z.有多种排序方法,但使用哪一种以及如何排序。
List<Movies> get Movies{
List<Movies> favMoviesList = <Movies>[];
for (final category in _appData.categories) {
for (final series in category.series!) {
final favMovies = series.movie!
.where((movie) =>
movie.stats != null && movie.stats!.isFavourite == true)
.toList();
if (favMovies.length > 0) {
List<Movies> sorted = favMovies
..sort((a, b) => b.stats!.favoriteDateTime!
.compareTo(a.stats!.favoriteDateTime!));
favMoviesList.addAll(sorted);
}}}
return favMoviesList;
}
1条答案
按热度按时间rmbxnbpk1#
ISO 8601时间戳可以通过字符串比较来排序-对于两个ISO字符串
a
和b
,如果时间a
在时间b
之后,则a > b
总是为真,反之亦然。至于实际的排序方法,这里使用
sort()
是正确的,只要确保只有一个句点--favMovies.sort()
,而不是favMovies..sort()
。另外,
List.sort()
不返回排序后的列表,它在适当的位置对列表进行排序,所以排序代码应该是: