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