non_constant_list_element
const 列表字面量中的值必须是常量。
描述
#当常量列表字面量中的元素不是常量值时,分析器会生成此诊断信息。该列表字面量可以是显式常量(因为它带有 const
关键字前缀),也可以是隐式常量(因为它出现在常量上下文中)。
示例
#以下代码会产生此诊断信息,因为 x
不是常量,即使它出现在隐式常量列表字面量中
dart
var x = 2;
var y = const <int>[0, 1, x];
常见修复
#如果列表需要是常量列表,则将该元素转换为常量。在上面的示例中,您可以在 x
的声明中添加 const
关键字
dart
const x = 2;
var y = const <int>[0, 1, x];
如果表达式不能变成常量,则列表也不能是常量,因此您必须更改代码,使列表不是常量。在上面的示例中,这意味着移除列表字面量之前的 const
关键字
dart
var x = 2;
var y = <int>[0, 1, x];