Pular para o conteúdo principal

argument_type_not_assignable

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

The argument type '{0}' can't be assigned to the parameter type '{1}'. {2}

Descrição

#

O analisador emite este diagnóstico quando o tipo estático de um argumento não pode ser atribuído ao tipo estático do parâmetro correspondente.

Exemplo

#

O código a seguir produz este diagnóstico porque um num não pode ser atribuído a uma String:

dart
String f(String x) => x;
String g(num y) => f(y);

Correções comuns

#

Se possível, reescreva o código para que o tipo estático seja atribuível. No exemplo acima, você pode alterar o tipo do parâmetro y:

dart
String f(String x) => x;
String g(String y) => f(y);

Se essa correção não for possível, adicione código para tratar o caso em que o valor do argumento não é do tipo exigido. Uma abordagem é converter outros tipos para o tipo exigido:

dart
String f(String x) => x;
String g(num y) => f(y.toString());

Outra abordagem é adicionar testes de tipo explícitos e código de fallback:

dart
String f(String x) => x;
String g(Object y) => f(y is String ? y : '');

Se você acredita que o tipo em tempo de execução do argumento sempre será o mesmo que o tipo estático do parâmetro, e está disposto a correr o risco de uma exceção em tempo de execução caso esteja errado, adicione um cast explícito:

dart
String f(String x) => x;
String g(num y) => f(y as String);

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ê.