有不同的方法可以实现这一目标:
1)迭代列表并检查每个元素是否不具有您认为相同的属性:
items = [Item(id: 1), Item(id: 2)];
newItem = Item(id: 2);
if (items.every((item) => item.id != newItem.id)) {
items.add(newItem);
}
Run Code Online (Sandbox Code Playgroud)
2)在对象类中使用contains()并覆盖== operator(也覆盖hashCode)您认为相同的属性。
items = [Item(id: 1), Item(id: 2)];
newItem = Item(id: 2);
if (!items.contains(newItem)) {
items.add(newItem);
}
// inside Item class
@override
bool operator ==(other) {
return this.id == other.id;
}
@override
int get hashCode => id.hashCode;
Run Code Online (Sandbox Code Playgroud)
3)代替Listuse Set,其中每个元素只能出现一次。它的默认实现是LinkedHashSet跟踪顺序。