我使用下面的样式类来模仿枚举(来自Does Dart support enumerations?) 它工作正常,因为这段代码产生了预期的结果。应该从const对象返回const值是否为const?
void main() {
InterpolationType it = InterpolationType.LINEAR;
print("it is $it and stringified ${stringify(it)}");
print(InterpolationType.fromJson(it.toJson()));
}
但是DartEditor在fromJson方法的case语句中抱怨“期望的常量表达式”。是否有我可以扔在某个地方摆脱这种投诉的常量?
class InterpolationType {
static const LINEAR = const InterpolationType._(0);
static const STEP = const InterpolationType._(1);
static const CUBIC = const InterpolationType._(2);
static get values => [
LINEAR,
STEP,
CUBIC
];
final int value;
const InterpolationType._(this.value);
String toString() {
switch(this) {
case LINEAR: return "LINEAR";
case STEP: return "STEP";
case CUBIC: return "CUBIC";
}
}
int toJson() {
return this.value;
}
static InterpolationType fromJson(int v) {
switch(v) {
case LINEAR.value: return LINEAR;
case STEP.value: return STEP;
case CUBIC.value: return CUBIC;
}
}
static InterpolationType fromString(String s) {
switch(s) {
case "LINEAR": return LINEAR;
case "STEP": return STEP;
case "CUBIC": return CUBIC;
}
}
}
如果我理解,建议是将'final int value'更改为'const value'。这样做的上面的例子给出:错误:第15行POS 9:常量字段'值'必须有一个初始值表达式 – user1338952
正确。此行为尚不存在。您可以将其推荐为该语言的功能请求。 (重写的答案表明这一点)。 –