我想知道这是否是我可以忽略的东西。
我正在扩展Equatable以便比较对象,但是扩展的类要求我的属性是最终的(不可变,我明白了)。但是,一旦我将该对象传递到小部件中,那便使我无法编辑该对象。我可以删除决赛,但效果很好,然后可以将对象传递到小部件中,对其进行编辑,然后再传递回给对象(无需创建一百个变量)。
所以我的问题。这是否可以接受,Equatable仍然可以使用吗?如果是的话,那就大做一些他们需要修复的事情。如果不是,为什么不使用扩展Equatable的类传入和编辑对象的选项是什么?
class PriceItem extends Equatable {
final String key; // I removed the final here
PriceItem({
this.key,
});
@override
List<Object> get props => [
key,
];
}
最佳答案
参见平等文档:
如果您考虑一下,就没有理由拥有两个具有相同键的可变对象,因为如果其中只有一个更改,则它们具有可比较的键这一事实是没有意义的。
您可能只在PriceItem中定义了一个方法,该方法接受另一个PriceItem并检查密钥是否相等。
关于class - Flutter Equatable Class属性必须全部为最终属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61214152/