【发布时间】:2020-08-08 18:46:13
【问题描述】:
我目前正在关注 resocoders clean architecture,他强烈建议将 Equatable 用于未来将比较的基本数据保存类。问题是我的课程看起来像这样:
class Person extends Equatable {
final String name;
final List<AlterEgo> alterEgos;
Person({@required name, @required alterEgos}):super([name, alterEgos]);
@override
List<Object> get props => [name, alterEgos];
}
class AlterEgo extends Equatable {
final String name;
final String superPower;
AlterEgo({@required name, @required superPower}):super([name, superPower]);
@override
List<Object> get props => [name, superPower];
}
void main(){
Person("Clark", <AlterEgo>[AlterEgo("Superman", "Flying")]) == Person("Clark", <AlterEgo>[AlterEgo("Superman", "Flying")]) //true
}
问题是当我编写构造函数时,IDE 抱怨列表不可比较。对于现在要定义哪些函数/类以获取由原始类型组成的对象列表以与 equatable 一起使用,我有点迷失了。该包的文档似乎也省略了这个用例,只说明 Equatable 仅适用于不可变类型。但是我不介意列表是不可变的。
编辑:已完成的示例。目前在移动设备上,无法立即测试。
【问题讨论】:
-
我认为缺少 props 覆盖
-
是的,为了简洁起见,我省略了它。问题不在于我不知道如何使用 equatable 本身,而是当我需要一个与不喜欢列表的 equatable 可变的 List 时,问题就出现了。
-
您能否添加一个完整的示例,我们可以将其复制到我们自己的 IDE 中并查看有问题的错误?