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:
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:
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:
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:
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:
String f(String x) => x;
String g(num y) => f(y as String);
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ê.