Pular para o conteúdo principal

invalid_type_argument_in_const_literal

Detalhes sobre o diagnóstico 'invalid_type_argument_in_const_literal' produzido pelo analisador do Dart.

Constant list literals can't use a type parameter in a type argument, such as '{0}'.

Constant map literals can't use a type parameter in a type argument, such as '{0}'.

Constant set literals can't use a type parameter in a type argument, such as '{0}'.

Descrição

#

O analisador gera este diagnóstico quando um parâmetro de tipo é usado como argumento de tipo em um literal de lista, mapa ou conjunto precedido por const. Isso não é permitido porque o valor do parâmetro de tipo (o tipo real que será usado em tempo de execução) não pode ser conhecido em tempo de compilação.

Exemplos

#

O código a seguir gera este diagnóstico porque o parâmetro de tipo T está sendo usado como argumento de tipo ao criar uma lista constante:

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

O código a seguir gera este diagnóstico porque o parâmetro de tipo T está sendo usado como argumento de tipo ao criar um mapa constante:

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

O código a seguir gera este diagnóstico porque o parâmetro de tipo T está sendo usado como argumento de tipo ao criar um conjunto constante:

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

Correções comuns

#

Se o tipo que será usado para o parâmetro de tipo pode ser conhecido em tempo de compilação, então remova o parâmetro de tipo:

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

Se o tipo que será usado para o parâmetro de tipo só puder ser conhecido em tempo de execução, então remova a palavra-chave const:

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

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.