我只想有一个带有颜色的最终列表:
final List<String> COLORS = ['#cefbe4', '#81ec72', '#5cd646'];
final num MAX = 90;
class Square {
// ...
对于 MAX 没问题,但对于 list 则无法编译: 初始化器必须是编译时常量
我也尝试过:
static final num MAX = 90;
class Square {
final List<String> COLORS = ['#cefbe4', '#81ec72', '#5cd646'];
新错误:“初始化程序必须是编译时常量”
我发现唯一的解决方案是在构造函数中初始化...... 我不喜欢这个解决方案:我不想要 Square 对象的列表实例。 我该怎么办?
最佳答案
我没有遇到和你一样的错误。在第一种情况下,我收到编译时警告“预期常量表达式”,在第二种情况下,我收到另一个编译时警告和运行时错误。尝试最新的 SDK,您可以找到 here .
static final num MAX = 90;
class Square {
final List<String> COLORS = ['#cefbe4', '#81ec72', '#5cd646'];
在这种情况下,static 没有任何意义,因为 static 表示类变量,对于同一类的所有实例化对象来说都是相同的。在这种情况下,MAX 超出了类边界。因此会显示运行时错误和编译时警告(“顶级字段不能是静态的”)。
我猜对于 Square 类的所有实例来说,MAX 和 COLORS 应该是相同的。所以这样做是有意义的:
class Square {
static final List<String> COLORS = const ['#cefbe4', '#81ec72', '#5cd646'];
static final num MAX = 90;
}
关于dart - 初始化器必须是编译时常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11352205/