有没有办法在不知道具体枚举的情况下将枚举转换为字符串并返回。枚举还共享一个 mixin。 例如:
mixin TestMixin {
String get value;
}
enum FirstEnum with TestMixin {
foo("bar");
const FirstEnum(this.value);
@override
final String value;
}
enum SecondEnum with TestMixin {
two("car");
const SecondEnum(this.value);
@override
final String value;
}
我现在有两个枚举,想要将它们转换为字符串并返回,就像这样
FirstEnum first = FirstEnum.foo;
SecondEnum second = SecondEnum.two;
String firstString = enumToString(first);
String secondString = enumToString(second); // -> enums as strings
Enum firstAgain = stringToEnum(firstString); // firstAgain == first
Enum secondAgain = stringToEnum(secondString); // secondAgain == second
String enumToString(Enum inp) {
// ???
}
Enum stringToEnum(String inp) {
// ???
}
dart 有什么方法可以做到这一点吗?据我所知,你可以用
reflectable
进行反思,但我还没有让它发挥作用。
enum ExampleEnum {
first,
second,
third,
}
您可以使用
enum.name
属性将枚举与字符串相互转换。
//For Enum to a String:
String enumToString(Enum inp) {
return inp.name;
}
要将 String 转换回枚举,必须确保输入必须等于 enum.name 之一,否则将不起作用。
Enum stringToEnum(String inp) {
return ExampleEnum.values.firstWhere((e) => e.name == inp);
}