待办事项
class ToDoItem{
final String id;
final String title;
final Color color;
final int price;
final IconData icon;
final String todoListId;
const ToDoItem({
@required this.color,
@required this.id,
@required this.todoListId,
@required this.price,
@required this.title,
@required this.icon,
});}
我正在努力将待办事项 list 中的商品总价加起来等于todoListId例如 :
列表屏幕
列表项屏幕
所以我想计算总商品价格
这是我尝试过的:
List<Map<String, Object>> get totalItemsPrice{
return List.generate(1, (index) {
var totalPriceSum = 0.0;
for (var i = 0; i < toDo.length; i++) {
totalPriceSum = toDo[index].amount + totalPriceSum ;
}
return {
'price': totalSum,
};
}).toList();
}
double get totalPriceSum {
return totalItemsPrice.fold(0.0, (sum, item) {
return sum + item['price'];
});
}
toDo看起来像这样:List<ToDO> toDo= [];
但是,当我只想计算所有待办事项的总价格时,它就无法计算出总价格 最佳答案
如果要基于项目的todoListId
进行过滤,则需要将其提供给方法。从那里,在where
之前使用fold
仅对具有匹配ID的项求和:
double totalPriceSum(int todoListId) {
return ItemsPrice.where((item) => item.todoListId == todoListId)
.fold(0.0, (sum, item) => sum + item['price']);
}