flutter - Flutter,尝试使用getter对map中的元素进行求和
问题描述
我有一个 CartItems 地图,每个地图都包含一个 ID、标题、数量和价格。我目前有一个 getter (itemCount),它返回 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 方法,并仅在添加和删除项目时计算总数量。这样您不需要每次都运行循环,我更喜欢这种方式。
推荐阅读
- android - 如何在 Android 中使用 Google Calendar API 获取过去的事件?
- awk - 解释 AWK 脚本的工作原理
- php - 在 wordpress 中使用增强的自定义类别插件在每个类别页脚中添加不同的文本字段
- jmeter - 如何在 JMeter 中存储响应数据?
- stripe-payments - Stripe:使用 Stripe Charge API 但考虑将部分结账流程切换到 Stripe Checkout API?
- c# - 如何在不打开新表单的情况下打开表单中的新内容?
- video - 在 ffmpeg concat 之后添加了额外的帧
- css - 调整背景图像的大小以适合容器
- javascript - 使用 axios et 调用的响应更新 jsx
- raspberry-pi - 如何使用电子生成器和 raspbian 在电子中构建应用程序?