Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Enums DART-我可以向枚举强制转换字符串吗?_Enums_Dart - Fatal编程技术网

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)