是否有任何方法来创建映射与enum作为关键,以确保操作符[]不为空?


enum SomeEnum { first, second }
Map<SomeEnum, String(or any type)> someMap = {
SomeEnum.first: 'first',
SomeEnum.second: 'second',
};
String variable = someMap[SomeEnum.first]; <- nullable

在上面的代码中,someMap[SomeEnum.{anything}]绝对不能为空,因为它有所有可能的SomeEnum作为键。

但这导致错误,因为someMap[SomeEnum.first]是可空的,不能分配给类型String

我如何告诉flutter,这有所有可能的枚举值,100%不能为空,而不使用!(我不想使用它,因为我使用这个地图很多,这有点烦人)

如果那是你的文字枚举和映射,你不需要那个映射。使用SomeEnum.first.name获取字符串

如果字符串不相同。我会用不同的方法。在使用Dart 2.17.0或更高版本时,可以使用增强的枚举和简单的添加方法来添加枚举,例如

enum SomeEnum { first, second;
String getString() {
switch (this) {
case SomeEnum.first: return "first string";
case SomeEnum.second: return "second string";
}
}
int toInt() {
switch (this) {
case SomeEnum.first: return 1;
case SomeEnum.second: return 2;
}
}
}

然后在需要的地方使用Some.first.getString()。或者Some.first.toInt()来获取整型

对于低级版本的Dart,您可以编写一个扩展,并以相同的方式使用它:

extension SomeEnumExtension on SomeEnum {
String getString() {
switch (this) {
case SomeEnum.first: return "first string";
case SomeEnum.second: return "second string";
}
}
}

相关内容

  • 没有找到相关文章

最新更新