跳到主要内容

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