Fala Sandro, tudo certo?
Na verdade faz sentido o erro, e tá na diferença no que faz o parse e tryParse.
O tryParse ele TENTA converter. O que quer dizer que ele assume que pode retornar ou um número de fato, caso a string seja numérica, ou um null caso ele não consiga converter.
Então, o problema é que desde de Fevereiro de 2021 (com o Flutter 2), Flutter passou a ter Segurança Contra Nulos, o que quer dizer que que um double
não pode receber um null. Para isso existe agora o double?
que é um tipo igual ao double, mas que permite nulos. (Isso se aplica a TODOS os tipos).
Então, em resumo, para resolver seu problema basta trocar os double
por double?
:
final int? numeroConta = int.tryParse(_textControllerNumConta.text);
final double? valor = double.tryParse(_textControllerValor.text);
Lembre-se que é bom testar depois, quando for usar, se o valor na variável é diferente de nulo. E usar !
para chamar pedir a ele o valor, se você já souber que não é nulo. Tipo isso:
if (valor != null){
valor = valor! + 1; //valor = valor + 1, sem a exclamação, não funciona.
}
OUUUU, você usa o parse
mesmo, se você garantir que nenhuma string não numéria será passada.
Pois o parse ele SEMPRE converterá para double
, pois você garante que passará uma string numérica. Caso não passe, ao invés de retornar um nulo, ele levantará um erro!
No resumo é isso, espero ter sido claro, e qualquer coisa estamos aê!