我知道这是一个老问题,至少现在似乎不可能返回 E ,其中 E 是通用的 enum ,但我正在使用此代码:
static dynamic asEnumValue(List<dynamic> enumValues, int index) {
try {
return enumValues[index];
} catch (err) {
return null;
}
}
这只是让您不必每次都检查 index 是否是您的 Enum 类型的正确值。
如果你传递了正确的值,你仍然可以使用枚举属性,比如它的索引。
当然,如果你没有传递正确的枚举值,你会得到一个TypeError。
使用示例(DartPad):
enum Test {
a,
b,
c
}
dynamic asEnumValue(List<dynamic> enumValues, int index) {
try {
return enumValues[index];
} catch (err) {
return null;
}
}
Test aTest;
Test nullTest1;
Test nullTest2;
void main() {
aTest = asEnumValue(Test.values, 0);
nullTest1 = asEnumValue(Test.values, -1);
nullTest2 = asEnumValue(Test.values, null);
print(aTest);
print(nullTest1);
print(nullTest2);
print(aTest?.index);
print(nullTest1?.index);
print(nullTest2?.index);
}
输出:
Test.a
null
null
0
null
null