2
respostas

A value of type 'Future<dynamic> can't be assigned to a variable of type 'Futue<Transferencia>'.

Implementei o código como está na aula 03 do módulo 04. Na aula rodou, mas como tenho a última versão do Flutter, aqui não estou conseguindo.

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

2 respostas

Fala Edson, tudo bom?

É que agora a conversão não é mais implicita, você tem que deixar claro que quer converter de Future<dynamic> que é o retorno do .push, para Future<Transferencia>;

Você pode fazer da seguinde forma:

final Future<Transferencia> future = Navigator.push(
            context,
            MaterialPageRoute(
              builder: (context) {
                return FormularioTransferencia();
              },
            ),
          ) as Future<Transferencia>;

O que seria basicamente adicionar o as Future<Transferencia> no final. E pronto, agora ele aceita a operação.


Você vai notar também que há um erro no future.then(). Nesse caso é só um detalhe chatinho, mas importante. O .then recebe uma função por parâmentro, ele não é uma função por sintaxe. Então:

ERRADO:

future.then(transferenciaRecebida) {
            debugPrint('$transferenciaRecebida');
          }

CERTO:

future.then((transferenciaRecebida) {
            debugPrint('$transferenciaRecebida');
          });

Para falicitar a visualização, você pode pensar que há uma sintaxe de função dentro do parâmetro do .then(), algo assim: .then( (){} ), que vai ter seus próprios parâmetros e corpo.


Ao final, o código fica assim:

onPressed: () {
          final Future<Transferencia> future = Navigator.push(
            context,
            MaterialPageRoute(
              builder: (context) {
                return FormularioTransferencia();
              },
            ),
          ) as Future<Transferencia>;

          future.then((transferenciaRecebida) {
            debugPrint('$transferenciaRecebida');
          });
        }

Acredito que seja isso, bons estudos e qualquer coisa é só chamar!

Muito obrigado pela resposta, Ricarth, mas eu só consegui fazer rodar da forma abaixo. Agora, estou enfrentando outra questão. Este exercício é do curso: Fundamentos do Flutter crie seu primeiro App, módulo 5 - Utilizando StatefulWidgets. No código que vai abaixo, eu já verifiquei e está sendo gravado os elementos da Lista que estão nas linhas 89 e 90. Quando insiro um novo elemento, e já verifiquei, ele está lá, ele não é mostrado na tela pela Listview.Builder. Poderia analisar para mim, por gentileza?

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )