[英]In dart, how to assign a value from a const Map to a const variable?
假设我有一个如下所示的 ColorPalette class:
class ColorPalette {
static const Map<int, Color> gray = {
400: Color(0xFFDDDDDD),
500: Color(0xFFEEEEEE),
// ...
};
// Primary colors in separate variable
static const Color primaryBlue = Color(0xFF0000FF);
// ...
}
如果我要将 map 的颜色值分配给需要 const 值的变量:
class SomeOtherClass {
static const Map<String, Color> stateColor = {
// Error
'pressed': ColorPalette.gray[500],
}
}
抱怨“必须用常量值初始化常量变量”。
但这很好用:
...
'pressed': ColorPalette.primaryBlue,
...
另外,在分配 map 时,执行500: const Color(...)
或static const Map<int, Color> gray = const {...}
也不起作用。
所以我怀疑这可能会引发错误,因为编译器不会在编译期间评估 map 中的所有条目,因此,使用给定键访问的值只能在运行时知道?
是否有任何解决方法可以将 map 的值分配给需要 const 值的变量?
没有解决方法。
e1[e2]
形式的表达式不能是常数。 []
运算符是一种方法(所有用户可定义的运算符都是),除了在已知系统类型上的极少数操作外,您不能在编译时调用方法。 Map 查找,即使在常量映射上,也不是这些例外之一。
ColorPalette.primaryBlue
起作用的原因是它直接引用了一个const
变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.