我想知道这是否是我可以忽略的东西。

我正在扩展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/

10-09 07:32