繁体   English   中英

在 dart 中,如何将 const Map 中的值赋给 const 变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM