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

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

我试过了.contains方法,但是没有用。

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

最佳答案

有多种方法可以实现此目的:

1)遍历列表并检查每个元素是否没有
您认为相等的属性:

items = [Item(id: 1), Item(id: 2)];
newItem = Item(id: 2);
if (items.every((item) => item.id != newItem.id)) {
  items.add(newItem);
}

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;

3)使用List代替Set,每个元素只能出现一次。它的默认实现是LinkedHashSet,用于跟踪订单。

10-05 20:51
查看更多