如何在列表飞镖中不重复相同的项目?

the*_*der 4 arrays list button dart flutter

我创建了一个 listView 和按钮,当我单击该按钮时,它会向 listView 添加一个项目。

问题是我实际上不想重复列表中的相同项目。

我尝试过 .contains 方法,但它不起作用。

我想要一个好的解决方案,请

Pab*_*era 6

有不同的方法可以实现这一目标:

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跟踪顺序。