【问题标题】:dart - how do check id/name if contains in List?dart - 如果列表中包含,如何检查 id/name?
【发布时间】:2019-06-29 00:05:14
【问题描述】:

我有一个用户想要将产品添加到购物车的情况,在此之前我想检查 id/name 产品是否在购物车中。

如果没有,我会将它添加到购物车,如果它已经存在,我将进行编辑(添加数量和价格)

我已尝试使用以下代码:

   Future checkIfProductHasAdded(String uid) async {
      for (var i = 0; i < _checkoutList.length; i++) {
        print(_checkoutList[i].name);

      if (_checkoutList[i].productName == getSelectedProduct.name) {
        selectedProductCheckout(i);

        print(getSelectedProduct.name +
            "PRODUCT CHECKOUT HAS ADDED" +
            _checkoutList[i].productName);

       // await updateProductCheckout(uid);

        break;

      } else {
        print(getSelectedProduct.name + "NOT FOUND AT PRODUCT CHECKOUT");
        //await addProductToCheckout(uid);
        break;
      }
    }
  }

当我print() 的值i 没有指定List 上的位置,而是停留在0 的位置。 如何让它发挥作用?

任何答案将不胜感激。

【问题讨论】:

    标签: list dart flutter


    【解决方案1】:

    您应该检查产品是否存在于 firstWhere 子句中。 像这样的:

    var product = _checkoutList.firstWhere((product) => product.productName == getSelectedProduct.name, orElse: () => null);
    
    if (product == null) addProductToCheckout(uid);
    else updateProductCheckout(uid);
    

    【讨论】:

    • 干得好。但是,我需要知道相同的产品结帐位置,以更新它(添加 x1 数量和价格)
    • 就像我上面使用的查询for i,当selectedProductCheckout(i); 被执行时,我可以在那时更新相同的产品结帐位置
    • 你有一个产品,所以你可以从列表中获取这个产品索引,像这样_checkoutList.indexOf(product)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 2015-08-09
    • 2013-12-17
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多