跳到主要內容

invalid_type_argument_in_const_literal

常量列表字面量不能在型別實參中使用型別形參,例如 '{0}'。

常量 map 字面量不能在型別實參中使用型別形參,例如 '{0}'。

常量 set 字面量不能在型別實參中使用型別形參,例如 '{0}'。

描述

#

當在帶有 const 字首的列表、map 或 set 字面量的型別實參中使用型別形參時,分析器會生成此診斷。這是不允許的,因為型別形參的值(執行時將使用的實際型別)在編譯時是未知的。

示例

#

以下程式碼會生成此診斷,因為在建立常量列表時,型別形參 T 被用作型別實參

dart
List<T> newList<T>() => const <T>[];

以下程式碼會生成此診斷,因為在建立常量 map 時,型別形參 T 被用作型別實參

dart
Map<String, T> newSet<T>() => const <String, T>{};

以下程式碼會生成此診斷,因為在建立常量 set 時,型別形參 T 被用作型別實參

dart
Set<T> newSet<T>() => const <T>{};

常見修復方法

#

如果在編譯時知道型別形參將使用的型別,則刪除型別形參

dart
List<int> newList() => const <int>[];

如果直到執行時才知道型別形參將使用的型別,則刪除關鍵字 const

dart
List<T> newList<T>() => <T>[];