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:
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:
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:
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:
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:
List<T> newList<T>() => <T>[];
Salvo indicação em contrário, a documentação neste site reflete Dart 3.13.7. Relatar um problema.
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ê.