Rua*_*uan 7 class dart flutter
我想知道这是否是我可以忽略的事情。
我扩展 Equatable 是为了比较对象,但扩展类要求我的属性是最终的(不可变的,我明白了)。但是,一旦我将其传递到小部件中,这就会阻止我编辑该对象。我可以删除final,它工作得很好,然后我可以将一个对象传递到一个小部件中,编辑它,然后将它传回(无需创建一百个变量)。
所以我的问题。这是可以接受的吗,Equatable 仍然有效吗?如果是的话,那就太好了,他们需要解决一些问题。如果不是,为什么不呢,我可以选择使用扩展 Equatable 的类传入和编辑对象吗?
错误:此类(或此类继承的类)被标记为“@immutable”,但其一个或多个实例字段不是最终的:
class PriceItem extends Equatable {
final String key; // I removed the final here
PriceItem({
this.key,
});
@override
List<Object> get props => [
key,
];
}
Run Code Online (Sandbox Code Playgroud)
Net*_*Zaf 10
请参阅可等式文档:
注意:Equatable 被设计为仅适用于不可变对象,因此所有成员变量都必须是最终的(这不仅仅是 Equatable 的一个功能 - 用可变值覆盖 hashCode 可能会破坏基于哈希的集合)。
如果您考虑一下,就没有理由拥有两个具有相同键的可变对象,因为如果只有其中一个发生更改,那么它们具有可比键的事实就毫无意义。
您可以在 PriceItem 中定义一个方法,该方法接受另一个 PriceItem 并检查键是否相等。
| 归档时间: |
|
| 查看次数: |
3664 次 |
| 最近记录: |