![](/img/trans.png)
[英]How to compare List of Map(i.e List<Map>) in dart using equatable package?
[英]Dart/Flutter : How to compare if 2 objects are equivalent without using Equatable
我想测试 2 个对象(同一类的 2 个不同实例)是否具有所有相同的属性值;
(即。看看它们是否在逻辑上等价)。
我不想只检查它们是否是完全相同的对象(像这样)。
而且我不想使用Equatable 包,只是因为我不想将我的属性标记为final
。
我想要的本质上是对 2 个对象的所有属性进行简单的深入比较。
我相信您需要覆盖类中的两个方法来执行自定义比较。
==
运算符hashCode
例如:
class MyObj {
String name;
MyObj(this.name);
@override
bool operator ==(Object o) {
if (o is MyObj && o.runtimeType == runtimeType) {
if (o.name == name) {
return true;
}
}
return false;
}
@override
int get hashCode => name.hashCode;
}
测试这个:
void main() {
MyObj objA = MyObj('billy');
MyObj objB = MyObj('bob');
MyObj objC = MyObj('billy');
print('object A == object B? ${objA == objB}');
print('object A == object C? ${objA == objC}');
}
应该产生:
object A == object B? false
object A == object C? true
要覆盖多个属性的hashCode
,请查看此讨论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.