Flutter Flatter,尝试使用getter来总结地图中的元素

Flutter Flatter,尝试使用getter来总结地图中的元素,flutter,maps,getter,Flutter,Maps,Getter,我有一个CartItems的地图,每个都包含id、标题、数量和价格。我目前有一个getter(itemCount),它返回CartItems的数量。但是我希望getter返回映射中所有cartims的数量之和。下面是相关的代码片段 class CartItem { final String id; final String title; final int quantity; final double price; CartItem({this.id, this.title

我有一个CartItems的地图,每个都包含id、标题、数量和价格。我目前有一个getter(itemCount),它返回CartItems的数量。但是我希望getter返回映射中所有cartims的数量之和。下面是相关的代码片段

class CartItem {
  final String id;
  final String title;
  final int quantity;
  final double price;

  CartItem({this.id, this.title, this.quantity, this.price});
}

class Cart with ChangeNotifier {
  Map<String, CartItem> items = {};

  int get itemCount {
    return items.length;
  }
类CartItem{
最终字符串id;
最后的字符串标题;
最终整数数量;
最终双倍价格;
CartItem({this.id,this.title,this.quantity,this.price});
}
使用ChangeNotifier初始化购物车{
映射项={};
int获取项目计数{
返回项目。长度;
}

只需循环浏览地图项目并计算数量之和

使用reduce

使用forEach

使用添加/删除/更新方法


如果您经常使用此方法,则可以在Cart类上创建add、remove方法,并仅在添加和删除项目时计算总数量总和。这样,您不必每次都运行循环,我更喜欢这种方式。

只需循环地图项目并计算数量总和即可

使用reduce

使用forEach

使用添加/删除/更新方法

如果您经常使用此方法,您可以在Cart类上创建add、remove方法,并仅在添加和删除项目时计算总数量总和。这样您就不需要每次都运行循环,我更喜欢这种方式

  int get itemCount {
    return items.values
        .map((item) => item.quantity)
        .reduce((count, quantity) => count + quantity);
  }
int get itemCount {
    int count =0;
    items.values.forEach((item) => count+=item.quantity);
    return count;
  }