Flutter计算该类别中物品的总价格

时间:2020-08-28 16:02:40

标签: list android-studio flutter dart

待办事项应用程序

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,
  });}

我正在努力将待办事项清单中的商品总价加起来等于todoListId 例如:

列表屏幕

enter image description here

列表项屏幕

enter image description here

所以我想计算商品总价

这是我尝试过的:

  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= [];

但是当我希望它只计算其类别中项目的总价格时,它正在计算所有待办事项的总价格

1 个答案:

答案 0 :(得分:4)

如果要基于项目的todoListId进行过滤,则需要将其提供给方法。从那里,在where之前使用fold,仅对具有匹配ID的项目求和:

double totalPriceSum(int todoListId) {
  return ItemsPrice.where((item) => item.todoListId == todoListId)
                   .fold(0.0, (sum, item) => sum + item['price']); 
}