待办事项

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 - Flutter计算类别中项目的总价-LMLPHP
列表项屏幕
list - Flutter计算类别中项目的总价-LMLPHP
所以我想计算总商品价格
这是我尝试过的:
  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']);
}

08-07 22:06