我正在嘗試比較物件,但情況是,雖然我有以下幾點:
Person p = Person("nombre", "Apellido");
Person p2 = Person("nombre", "Apellido");
if(p == p2){
print("IGUALES");
}else{
print("DIFERENTES");
}
它一直告訴我它們不相同時它們不相同,我不知道為什么會發生這種情況,或者在比較物件時比較器“==”是否不起作用。我也試過了,但是沒有辦法。
if(identical(p, p2)){
print("IGUALES");
}else{
print("DIFERENTES");
}
uj5u.com熱心網友回復:
發生這種情況是因為默認情況下,==運算子通過檢查物件在記憶體中的參考來檢查物件是否是同一個物件。如果您想要基于值的相等性,您應該覆寫==運算子和 hashCode(這很難手動完成),或者您可以使用Equatable(一個眾所周知且維護的基于值的相等性包)。
class Person extends Equatable {
final String nombre;
final String apellido;
...
...
@override
List<Object?> get props => [nombre, apellido];
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/330656.html
上一篇:LiveData值回傳null
