与其他类的枚举均衡



我创建了一个只将Enums作为参数的类。我想我可以创建第三个Enum,在那里我可以手动放置每个选项,这样它们就有了更好的命名。

唯一的问题是,我无法仅通过使用==运算符来测试具有相同参数的第三个Enum实例和类实例是否相等。尝试使用equatable并将Enum实例视为我的类实例,因为它确实实现了它,但什么都不起作用。当然,我可以创建一个所有给定参数都相等的测试,但我只是想知道我是否可以做些什么,让它们在使用==运算符时返回true

例如:

配置

enum A {
a,
b;
}
enum B {
c,
d;
}
class Class with EquatableMixin {
const EveryDayOfYear({required this.aValue, required this.bValue});
final A aValue;
final B bValue;

@override
List<Object?> get props => [aValue, bValue];
}
enum C {
ac(Class(aValue: A.a, bValue: B.c)),
ad(Class(aValue: A.a, bValue: B.d)),
bc(Class(aValue: A.b, bValue: B.c)),
bd(Class(aValue: A.b, bValue: B.d));
const C(this._handler);
final Class _handler;
@override
A get aValue => _handler.aValue;
@override
B get bValue => _handler.bValue;
@override
List<Object?> get props => [aValue, bValue];
}

目标

final instance = Class(aValue: A.a, bValue: B.c);
instance == C.ac; // I would like something so this operation returns true.

正如@Levi-Lesches在这里评论的那样,我的问题的答案是覆盖我的operator ==:

@override
// ignore: hash_and_equals, already implemented by EquatableMixin
bool operator ==(Object other) {
return (super == other) ||
((other is Class) &&
(week == other.aValue) &&
(day == other.bValue));
}

这解决了我的问题,并且是公平的,因为我的类实例不是Enum,但我的枚举常量实际上是我的类示例。

最新更新