我需要检查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,
});
}
上面的代码没有按预期工作,请帮我弄清楚问题。
你使用包含略有错误。
来自: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;
或者你可以遍历你的列表并逐一搜索正常的方式,这似乎稍微容易一些。