是否可以在 Dart 中使用带有字符串(引用文本)的枚举?

Is an enum with string (quoted text) in Dart possible?

我是dart初学者,我需要在dart中实现这样一个枚举:

  export enum Something {
        'qwe' = 1,
        'rty' = 2,
        'uio' = 4,
    }

我想用两种方式对值进行编码和编码,dart 中最好的结构是什么?

例如,有变量 4,我想得到 'uio',而在其他 类 中,字符串 'uio' 我想得到 4.

我知道我可以用地图做到这一点,但这个解决方案似乎不安全。

最好的结构是地图。或者两张地图,因为你想双向映射。

您正在从 String 映射到 int,以及从 int 映射到 String。那是两个值的映射。

它与枚举无关,枚举是同一类型的多个实例。

我相信您可以在那里找到一些“BiDirectionalMap”,但不太值得,因为您的映射不需要动态更新。 两个常量映射就可以了:

const somethingMap = {
  'qwe': 1,
  'rty': 2,
  'uio': 4,
};
const somethingReverseMap = {
  1: 'qwe',
  2: 'rty',
  4: 'uio',
};
int something(String code) => somethingMap[code] ?? 
    throw ArgumentError.value(code, "code", "Not a valid code");
String somethingReverse(int value) => somethingReverseMap[value] ?? 
    throw ArgumentError.value(value, "value", "Not a valid value");

没有比这更安全的了。您正在打开 runtime 字符串值,不允许每个字符串值,因此您不能使用类型系统。