翩翩,试图用getter将地图中的元素相加。

问题描述 投票:0回答:1

我有一个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;
  }
flutter maps getter
1个回答
0
投票

只需在地图项目中循环并计算数量的总和。

使用 减少

  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方法,只在添加和删除商品时计算总数量的总和,这样你就不需要每次都运行循环,我喜欢这种方式。

© www.soinside.com 2019 - 2024. All rights reserved.