检查列表是否包含dart中对象的属性

问题描述 投票:0回答:1

我需要检查myItemsList是否包含myitem.itemId,如果它存在需要添加itemQuantity,如果它不存在需要将myitem对象添加到myItemsList

List<MyItem> myItemsList = new List();

MyItem myitem = new MyItem (
  itemId: id,
  itemName: name,
  itemQuantity: qty,
);

if (myItemsList.contains(myitem.itemId)) {
  print('Allready exists!');
} else {
  print('Added!');
  setState(() {
    myItemsList.add(myitem);
  });
}

MyItem

class MyItem {
  final String itemId;
  final String itemName;
  int itemQuantity;

  MyItem ({
    this.itemId,
    this.itemName,
    this.itemQuantity,
  });
}

上面的代码没有按预期工作,请帮我弄清楚问题。

dart
1个回答
2
投票

你使用包含略有错误。

来自:https://api.dartlang.org/stable/2.2.0/dart-core/Iterable/contains.html

bool contains(Object element) {
  for (E e in this) {
    if (e == element) return true;
  }
  return false;
}

您可以覆盖==运算符,请参阅:https://dart-lang.github.io/linter/lints/hash_and_equals.html

@override    
bool operator ==(Object other) => other is Better && other.value == value;

或者你可以遍历你的列表并逐一搜索正常的方式,这似乎稍微容易一些。

© www.soinside.com 2019 - 2024. All rights reserved.