跳到主要內容

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];