spy*_*don 13 enums dart flutter
是否可以直接使用枚举构造函数?
void main() {
print(Test(1));
}
enum Test {
test1(1),
test2(2);
final int id;
const Test(this.id);
}
Run Code Online (Sandbox Code Playgroud)
这将给出以下错误:
生成枚举构造函数只能用作重定向的目标
我知道可以这样解决:
enum Test {
test1(1),
test2(2);
final int id;
const Test(this.id);
factory Test.fromId(int id) {
return values.firstWhere((e) => e.id == id);
}
}
Run Code Online (Sandbox Code Playgroud)
但感觉总得有办法避开这个锅炉板厂吧?
Ivo*_*ers 24
我认为没有比那个工厂更简单的方法了。我个人的观点是,它确实没有那么多的样板,但这是主观的。
我能想到为什么没有更简单的方法的一个原因是因为id在你的情况下不是唯一的,这是完全有效的:
enum Test {
test1(1),
secondtest1(1),
test2(2);
final int id;
const Test(this.id);
factory Test.fromId(int id) {
return values.firstWhere((e) => e.id == id);
}
}
Run Code Online (Sandbox Code Playgroud)
现在你将永远无法secondtest1使用fromId
| 归档时间: |
|
| 查看次数: |
4641 次 |
| 最近记录: |