dart -如何检查ID/名称,如果包含在列表中?

hwamh0ep  于 2023-04-18  发布在  其他
关注(0)|答案(2)|浏览(143)

我有一个案例,当用户想要将产品添加到购物车中时,在此之前,我想检查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 .如何使它工作?
任何答复都将受到欢迎。

xkrw2x1b

xkrw2x1b1#

您应该检查firstWhere子句中是否存在产品,如下所示:

var product = _checkoutList.firstWhere((product) => product.productName == getSelectedProduct.name, orElse: () => null);

if (product == null) addProductToCheckout(uid);
else updateProductCheckout(uid);
ruarlubt

ruarlubt2#

此解决方案是最快的:

final bool _productIsInList = 
    _checkoutList.any((product) => product.name == getSelectedProduct.name);
if (_productIsInList) {
   // The list contains the product
} else {
   // The list does not contain the product
}

注意:如果您不需要比较ID/名称,但只想检查特定项目是否在列表中,则可以使用_checkoutList.contains(item)

相关问题