如果列表中不包含对象,则添加对象

时间:2019-01-11 14:05:07

标签: dart flutter

仅在尚未将对象添加到列表中时,我才尝试将其添加到列表中。

  for (var interest in poll.poll.interests) {
        InterestDrop n = new InterestDrop(interest, false);
        print(interest);
        print(dropInterestsList);
        print(dropInterestsList.contains(n));
        if (!(dropInterestsList.contains(n))){
          dropInterestsList.add(n);

        }
      } 

但这总是返回false,即使对象已经存在也要添加它……如何解决这个问题?

答案:

class InterestDrop {
String name;
bool isClicked;

InterestDrop(this.name, this.isClicked);

bool operator == (o) => o is InterestDrop && name == o.name && isClicked == o.isClicked;
int get hashCode => hash2(name.hashCode, isClicked.hashCode);
} 

2 个答案:

答案 0 :(得分:2)

您需要在自定义类中覆盖equality operator

从文档中

  

所有对象的默认行为是仅当且仅当返回true   这个和另一个是同一对象。

因此,如果您的数组包含与之比较的确切对象,则contains方法将仅返回true。

答案 1 :(得分:1)

您需要执行以下操作:

class InterestDrop {
  operator ==(InterestDrop other) => identifier == other.identifier;
}