我有以下函数根据日期对列表进行排序,但如果日期时间在一个月的第一天之前,它会创建双列表
我想要的是它根据月份的第一天对列表进行排序并在第一天之前删除所有项目
List expenseData= [
{id: 1242, detail: milk, amount: $5, date: 2021-06-21 00:00:00:000},
{id: 1242, detail: egg, amount: $2, date: 2021-05-15 00:00:00:000},
{id: 1243, detail: bread, amount: $3, date: 2021-05-13 00:00:00:000},
{id: 1244, detail: butter, amount: $7, date: 2021-05-22 00:00:00:000},
{id: 1247, detail: butter, amount: $7, date: 2021-06-10 00:00:00:000},
];
pieDatathisMonth() {
var now = DateTime.now();
var firstDayMonth = DateTime(now.year, now.month, 1);
var sortExpData = expenseData;
sortExpData.sort((d1, d2) {
return d1.date.compareTo(firstDayMonth);
});
sortExpData.toList();
thisMonthExpense.addAll(sortExpData);
update();
}
这是对您的排序方法的修复。我做了一些DateTime
演员,因为我expenseData
的格式为Map<String, dynamic>
.
void pieDatathisMonth() {
var now = DateTime.now();
var firstDayMonth = DateTime(now.year, now.month, 1);
var sortExpData = List<Map<String, dynamic>>.from(expenseData);
// remove all data before firstday because you don't need to sort them.
sortExpData.removeWhere((e) => (e['date'] as DateTime).isBefore(firstDayMonth));
sortExpData.sort((d1, d2) {
return (d1['date'] as DateTime).compareTo(d2['date'] as DateTime);
});
sortExpData.toList();
thisMonthExpense.addAll(sortExpData);
update();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句