我有一个CartItems的地图,每个CartItems都包含一个id,标题,数量和价格。目前我有一个getter (itemCount),它可以返回CartItems的数量,但我希望getter能够返回地图中所有CartItems的数量之和。但我希望getter能够返回地图中所有CartItems的数量之和。以下是相关的代码片段
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;
}
只需在地图项目中循环并计算数量的总和。
使用 减少
int get itemCount {
return items.values
.map((item) => item.quantity)
.reduce((count, quantity) => count + quantity);
}
使用 forEach
int get itemCount {
int count =0;
items.values.forEach((item) => count+=item.quantity);
return count;
}
使用添加删除更新方法。
如果你经常使用这个方法,你可以在Cart类上创建add,remove方法,只在添加和删除商品时计算总数量的总和,这样你就不需要每次都运行循环,我喜欢这种方式。