Enums DART-我可以向枚举强制转换字符串吗?
有没有办法将字符串转换为枚举Enums DART-我可以向枚举强制转换字符串吗?,enums,dart,Enums,Dart,有没有办法将字符串转换为枚举 enum eCommand{fred, joe, harry} eCommand theCommand= cast(eCommand, 'joe');?? 我想我只需要搜索枚举(例如循环) 干杯 Steve对于Dart枚举,这有点麻烦 请参阅以获得解决方案 如果您需要的不仅仅是枚举的最基本特性,通常最好使用老式的枚举——一个包含常量成员的类 有关旧式枚举的信息,请参见我对枚举的状态感到恼火,并构建了一个库来处理此问题: 基本用法: import'package
enum eCommand{fred, joe, harry}
eCommand theCommand= cast(eCommand, 'joe');??
我想我只需要搜索枚举(例如循环)
干杯
Steve对于Dart枚举,这有点麻烦 请参阅以获得解决方案 如果您需要的不仅仅是枚举的最基本特性,通常最好使用老式的枚举——一个包含常量成员的类
有关旧式枚举的信息,请参见我对枚举的状态感到恼火,并构建了一个库来处理此问题: 基本用法:
import'package:enum_to_string:enum_to_string.dart';
枚举TestEnum{testValue1};
main(){
最终结果=EnumToString.fromString(TestEnum.values,“testValue1”);
//TestEnum.testValue1
}
仍然比我想要的更详细,但是完成了工作。我有同样的问题,一个小枚举和一个字符串,所以我做了这个
dynamic _enum_value = EnumFromString(MyEnum.values, string_to_enum);
dynamic EnumFromString(List values, String comp){
dynamic enumValue = null;
values.forEach((item) {
if(item.toString() == comp){
enumValue = item;
}
});
return enumValue;
}
我知道这不是最好的解决方案,但它很有效。我想出了一个灵感来源于此的解决方案,可以作为列表中的一个简单扩展
extension EnumTransform on List {
String string<T>(T value) {
if (value == null || (isEmpty)) return null;
var occurence = singleWhere(
(enumItem) => enumItem.toString() == value.toString(),
orElse: () => null);
if (occurence == null) return null;
return occurence.toString().split('.').last;
}
T enumFromString<T>(String value) {
return firstWhere((type) => type.toString().split('.').last == value,
orElse: () => null);
}
}
enum enum Color {
red,
green,
blue,
}
var colorEnum = Color.values.enumFromString('red');
var colorString: Color.values.string(Color.red)