Sur*_*gch 3 enums dart flutter
我的 Flutter 项目中有一个 Dart 枚举,如下所示:
enum RepeatState {
playSongOnce,
repeatSong,
repeatPlaylist,
}
Run Code Online (Sandbox Code Playgroud)
如果我有一些随机的枚举状态,比如 RepeatState.repeatSong,我如何迭代到下一个枚举(不做类似用 switch 语句映射它们的事情)?
Sur*_*gch 14
鉴于这样的枚举,
enum MyEnum {
horse,
cow,
camel,
sheep,
goat,
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下values属性迭代枚举的值:
for (var value in MyEnum.values) {
print(value);
}
// MyEnum.horse
// MyEnum.cow
// MyEnum.camel
// MyEnum.sheep
// MyEnum.goat
Run Code Online (Sandbox Code Playgroud)
每个值都有一个索引:
int index = MyEnum.horse.index; // 0
Run Code Online (Sandbox Code Playgroud)
您可以使用下标符号将索引转换回枚举:
MyEnum value = MyEnum.values[0]; // MyEnum.horse
Run Code Online (Sandbox Code Playgroud)
结合这些事实,您可以遍历枚举的值以找到下一个值,如下所示:
MyEnum nextEnum(MyEnum value) {
final nextIndex = (value.index + 1) % MyEnum.values.length;
return MyEnum.values[nextIndex];
}
Run Code Online (Sandbox Code Playgroud)
即使索引位于枚举值列表的末尾,也可以使用模运算符句柄:
MyEnum nextValue = nextEnum(MyEnum.goat); // MyEnum.horse
Run Code Online (Sandbox Code Playgroud)
enum Fruites { Mango, Banana, Cherry, Avacado, Papaya }
void main() {
Fruites.values.forEach((name) {
print(name);
});
}
Run Code Online (Sandbox Code Playgroud)
输出:
Fruites.Mango
Fruites.Banana
Fruites.Cherry
Fruites.Avacado
Fruites.Papaya
Run Code Online (Sandbox Code Playgroud)
仅取姓名部分
print(name.toString().split('.').elementAt(1));
Run Code Online (Sandbox Code Playgroud)
输出:
Mango
Banana
Cherry
Avacado
Papaya
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1936 次 |
| 最近记录: |