我在对象中有两个 myContactsModal 列表,即
List<myContactsModel> allContacts=[myContactsModel(displayName: "ABC",
phoneNumbers: "1234"),myContactsModel(displayName: "EFG",
phoneNumbers: "12345"),myContactsModel(displayName: "Test",
phoneNumbers: "78923")];
List<myContactsModel> chekList =[myContactsModel(displayName: "ABC",
phoneNumbers: "8973"),myContactsModel(displayName: "BHGS",
phoneNumbers: "12347872")];
我想要实现的是比较这两个列表,如果 checkLists 中具有相同 displayName 的元素存在于 allContacts 数组中,我想更新 allContacts 列表中的该元素,如果它不存在于 allContacts 列表中,则应在 allContacts 列表中添加新条目。输出应该是:
List<myContactsModel>allContacts=[
myContactsModel(displayName: "ABC",
phoneNumbers: "8973"),
myContactsModel(displayName: "EFG",
phoneNumbers: "12345"),
myContactsModel(displayName: "Test",
phoneNumbers: "78923"),
myContactsModel(displayName: "BHGS",
phoneNumbers: "12347872")
]
要与 Dart 中的列表进行比较,我们需要使用此函数
import 'package:flutter/foundation.dart';
if(listEquals(allContacts, chekList)){
print('List is Equal');
}else{
print('List is not Equal');
}
如果您的模型类没有覆盖具有相等性,则在一种情况下这将无法正常工作。
这意味着
myContactsModel
class 必须覆盖hashCode
和==
。
具有相等性的示例模型类。您可以找到覆盖hashCode
并且==
它也必须在您的模型类中。
class myContactsModel {
final int id;
final String name;
final String email;
myContactsModel({
required this.id,
required this.name,
required this.email,
});
// This must be there
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is myContactsModel &&
other.id == id &&
other.name == name &&
other.email == email;
}
// This must be there
@override
int get hashCode {
return id.hashCode ^ name.hashCode ^ email.hashCode;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句