首页 > 解决方案 > 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;
  }

标签: fluttermapsgetter

解决方案


只需遍历地图项并计算数量的总和

使用减少

  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 方法,并仅在添加和删除项目时计算总数量。这样您不需要每次都运行循环,我更喜欢这种方式。


推荐阅读