将枚举转换为字符串并在 dart 中返回

问题描述 投票:0回答:1

有没有办法在不知道具体枚举的情况下将枚举转换为字符串并返回。枚举还共享一个 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
进行反思,但我还没有让它发挥作用。

flutter dart reflection enums
1个回答
0
投票
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);
}
© www.soinside.com 2019 - 2024. All rights reserved.