collection_element_from_deferred_library
來自延遲載入庫的常量值不能用作 'const' 對映字面量中的鍵。
來自延遲載入庫的常量值不能用作 'const' 建構函式中的值。
來自延遲載入庫的常量值不能用作 'const' 列表字面量中的值。
來自延遲載入庫的常量值不能用作 'const' 對映字面量中的值。
來自延遲載入庫的常量值不能用作 'const' 集合字面量中的值。
描述
#當集合字面量顯式(因為帶有 const 關鍵字字首)或隱式(因為它出現在 常量上下文中)為常量,並且包含一個從使用 deferred 匯入的庫中宣告的值時,分析器會生成此診斷。常量在編譯時進行評估,而來自延遲載入庫的值在編譯時不可用。
有關更多資訊,請參閱延遲載入庫。
示例
#假設有一個檔案 a.dart 定義了常量 zero
dart
const zero = 0;以下程式碼會產生此診斷,因為常量列表字面量包含了 a.zero,而它是使用 deferred 匯入的
dart
import 'a.dart' deferred as a;
var l = const [a.zero];常見修復方法
#如果集合字面量不需要是常量,則移除 const 關鍵字
dart
import 'a.dart' deferred as a;
var l = [a.zero];如果集合需要是常量且必須引用匯入的常量,則從匯入中移除 deferred 關鍵字
dart
import 'a.dart' as a;
var l = const [a.zero];如果不需要引用該常量,則將其替換為合適的值
dart
var l = const [0];