Flutter添加相同商品时购物车Badge数量不递增问题咨询
问题原因
你当前Cart类中的itemCount getter返回的是_items Map的长度,统计的是购物车中不同商品的种类数,而非所有商品的总件数。添加已存在的商品时不会新增Map的key,所以返回值不会变化,Badge数值自然不会更新。
修复方案
1. 修改itemCount统计逻辑
将Cart类里的itemCount getter改为累加所有商品的quantity字段:
int get itemCount { // 累加所有购物车条目对应的商品数量 return _items.values.fold(0, (currentSum, item) => currentSum + item.quantity); }
2. 补充商品添加逻辑(若未实现)
确保你添加商品的逻辑可以正确更新已存在商品的数量,参考实现如下:
// 放在Cart类中 void addItem(String productId, String productTitle, double productPrice) { if (_items.containsKey(productId)) { // 商品已存在,数量+1 _items.update( productId, (oldItem) => CartItem( id: oldItem.id, title: oldItem.title, quantity: oldItem.quantity + 1, price: oldItem.price, ), ); } else { // 商品不存在,新增条目 _items.putIfAbsent( productId, () => CartItem( id: DateTime.now().toIso8601String(), title: productTitle, quantity: 1, price: productPrice, ), ); } notifyListeners(); }
Badge侧的绑定逻辑不需要修改,修改完成后添加相同商品时Badge就会正确累加总数量。
内容的提问来源于stack exchange,提问作者supremo
相关产品推荐
相关产品推荐

