Flutter Flatter,尝试使用getter来总结地图中的元素
我有一个CartItems的地图,每个都包含id、标题、数量和价格。我目前有一个getter(itemCount),它返回CartItems的数量。但是我希望getter返回映射中所有cartims的数量之和。下面是相关的代码片段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
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;
}