You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:57:02