如果产品尺寸不同,则将 Flutter 添加到新购物车

时间:2021-07-01 10:14:09

标签: flutter

您好,我有一个简单的电子商务应用程序。有新商品加入购物车时,我可以添加,但是当不同尺码到货时,我想注册一个新商品,我该如何解决?

我的购物车代码;

void addItem(
    String productId,
    String title,
    double price,
    String image,
    String size,
  ) {
    if (_items.containsKey(productId)) {
      _items.update(
        productId,
        (prevCartItem) => Cart(
          id: prevCartItem.id,
          title: prevCartItem.title,
          image: prevCartItem.image,
          quantity: prevCartItem.quantity + 1,
          price: prevCartItem.price,
          size: prevCartItem.size,
        ),
      );
    } else {
      _items.putIfAbsent(
        productId,
        () => Cart(
          id: DateTime.now().toString(),
          title: title,
          quantity: 1,
          image: image,
          price: price,
          size: size,
        ),
      );
    }
    notifyListeners();
  }

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我假设该物品是布料或某种类型的物品,用户必须选择尺寸才能添加该物品

让 size 为你的 item 类中的 size 并使其成为地图

你的代码看起来像这样..

VariableDoesNotExist at /control/control
Failed lookup for key [Control] in [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <SoftDeleteQuerySet [<Control: Go-live approval>]>, 'control_list': <SoftDeleteQuerySet [<Control: Go-live approval>]>, 'filter': <django_filters.filterset.ControlFilterSet object at 0x000002B9C2C8FE08>, 'form': <ControlForm bound=False, valid=False, fields=(title;description;activity;type;frequency;owner;reviewer1;reviewer2;priority;reviewer1_r;reviewer2_r;status;process;risk;bu;application;referencenumber)>, 'view': <app.views.ControlView object at 0x000002B9C2BAA948>, 'table': <django_tables2.tables.ControlAutogeneratedTable object at 0x000002B9C2D3D148>, 'controls': <SoftDeleteQuerySet [<Control: Go-live approval>]>}]

答案 1 :(得分:0)

它总是会更新 prevCart 因为“它有相同的 ID”你只需要添加条件来检查 prevCart 是否有相同的项目大小来完成这个 概念: if(_items.containsKey(productId)) => if(_items.containsKey(productId) && prevCartItem.size != size )