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

如何设置购物车商品数量为0及解决0数量商品被误加入购物车的问题

根因分析
  • 代码仅对已存在于购物车中的商品做了数量为0时的移除处理,没有覆盖「原本不在购物车中的商品传入数量为0」的场景
  • 当要修改数量的商品不在购物车中时,代码直接进入else分支,无论传入的数量是否为0都会将该商品添加到购物车,这就是数量为0的商品被异常加入的核心原因
  • 额外隐藏问题:创建新购物车时默认把当前商品传入初始化列表的逻辑也有缺陷,即使用户传入的数量为0,新建购物车时也会先把商品加进去
修复方案

调整else分支逻辑增加数量合法性校验,同时修改新建购物车的初始化逻辑,修改后的代码如下:

Future<void> setProductQuantity({
    @required Product product,
    @required String cartId,
    @required int quantity,
  }) async {
    // 新建购物车时先初始化为空,后续按逻辑判断是否添加商品
    Cart cart = getCart(cartId) ?? _createCart(cartId: cartId, products: []);
    Product productInCart = cart.getProductForId(product.id);

    if (productInCart != null) {
      if (quantity == 0) {
        cart.products.remove(productInCart);
      } else {
        productInCart.quantity = quantity;
      }
    } else {
      // 新增判断:只有数量大于0时才把商品添加到购物车
      if (quantity > 0) {
        product.quantity = quantity;
        cart.products.add(product);
      }
    }
    await persistCart(cart);
  }

内容的提问来源于stack exchange,提问作者dosytres

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:54:03