enum Fruit {
apple, banana
}
main() {
var a = Fruit.apple;
switch (a) {
case Fruit.apple:
print('it is an apple');
break;
}
// get all the values of the enums
for (List<Fruit> value in Fruit.values) {
print(value);
}
// get the second value
print(Fruit.values[1]);
}
1.8之前的旧方法:
class Fruit {
static const APPLE = const Fruit._(0);
static const BANANA = const Fruit._(1);
static get values => [APPLE, BANANA];
final int value;
const Fruit._(this.value);
}
类中的那些静态常量是编译时常量,并且这个类现在可以用在例如switch语句中:
var a = Fruit.APPLE;
switch (a) {
case Fruit.APPLE:
print('Yes!');
break;
}
8条答案
按热度按时间z0qdvdin1#
从1.8开始,可以使用如下枚举:
1.8之前的旧方法:
类中的那些静态常量是编译时常量,并且这个类现在可以用在例如
switch
语句中:qco9c6ql2#
使用r41815,Dart获得了本机枚举支持,请参见http://dartbug.com/21416,并可按如下方式使用
[状态.无、状态.正在运行、状态.已停止、状态.已暂停]
值:状态。无,索引:0
value:状态。正在运行,索引:1
值:状态。已停止,索引:2
值:状态。已暂停,索引:3
正在运行:状态。正在运行,1
运行指数:Status.running
一个限制是,不可能为枚举项设置自定义值,这些值是自动编号的。
更多详细信息,请参阅https://www.dartlang.org/docs/spec/EnumsTC52draft.pdf草案
cnwbcb6i3#
枚举应该在将来可用。但是在Enum has landed之前,您可以执行以下操作:
5us2dqdw4#
This,这可能是您问题的答案:
你仍然可以这样做:
在我看来,它使用起来更清晰,对于编写应用程序结构来说,它有点困难,但在某些情况下,它更好,更清晰。
eoxn13cs5#
下面这个方法怎么样:
e37o9pze6#
是的!在Dart中使用枚举实际上非常有用:
x6yk4ghg7#
只需使用类型类文件。
Dart-Types
简单、快速、更强大、更有帮助。
***小问题,*该类限制为五个不同的选择,加上一个表示为空。
vd8tlhqk8#
以防有人还在寻找快速解决方案。
我们有时需要枚举的整数值,有时需要字符串值。因此我们实现了一个快速包这个. Enum Value Generator和一个扩展,以方便地生成必要的代码,但这不是强制性的. vscode extension。它也可以与jsonAnnotation一起使用。