5
respostas

Erro ao criar uma nova tranferência ela não aparece na tela

class ListaTransferenciasState extends State<ListaTransferencias> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Transferências'),
      ),
      body: ListView.builder(
        itemCount: widget._transferencias.length,
        itemBuilder: (context, indice) {
          final transferencia = widget._transferencias[indice];
          return ItemTransferencia(transferencia);
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          final Future<Transferencia?> future =
              Navigator.push(context, MaterialPageRoute(builder: (context) {
            return const FormularioTransferencia();
          }));
          future.then((transferenciaRecebida) {
            Future.delayed(const Duration(seconds: 1), () {
              debugPrint('chegou no then do future');
              debugPrint('$transferenciaRecebida');
              if (transferenciaRecebida != null) {
                setState(() {
                  widget._transferencias.add(transferenciaRecebida);
                });
              }
            });
          });
        },
        child: const Icon(Icons.add),
      ),
    );
  }
}

Está dando erro nesta parte do código acima.

5 respostas

Olá Diego, alguma novidade? Estou empacado justamente nessa parte! Não aparece a transferência feita!

Até agora não recebi nenhum retorno da equipe de suporte da Alura.

Oi Diego, tudo bem? Eu consegui resolver, alterando o seguinte código:

onPressed: () {
          final Future<Transferencia?> future =
              Navigator.push(context, MaterialPageRoute(builder: (context) {
            return const FormularioTransferencia();
          }));
          future.then((transferenciaRecebida) {
            Future.delayed(const Duration(seconds: 1), () {
              debugPrint('chegou no then do future');
              debugPrint('$transferenciaRecebida');
              if (transferenciaRecebida != null) {
                setState(() {
                  widget._transferencias.add(transferenciaRecebida);
                });
              }
            });

para:

onPressed: () {
          Navigator.push(context, MaterialPageRoute(builder: (context) {
            return FormularioTransferencia();
          })).then((transferenciaRecebida) {
            setState(() {
              debugPrint(transferenciaRecebida.toString());
            widget._transferencias.add(transferenciaRecebida);
            debugPrint(widget._transferencias.toString());
            });
          });
        },

O problema está em alguma parte do "Future", porém não consegui entender o por que de estar falhando!

Alguém do suporte podia ajudar né... To nessa também!

Boa tarde Diego, tudo bom?

Inicialmente, sugiro que você faça o novo curso de Flutter: https://cursos.alura.com.br/course/flutter-widgets-stateless-stateful-imagens-animacoes dado que esse curso está bastante antigo e precisa ser criado na versão 1.7 do Flutter para não ter problemas com erros.

Quanto ao seu erro, você pode me mandar uma foto do seu console? Quando você tenta rodar seu código a aba de Run na parte inferior da sua IDE mostra uma sequencia de erros, isso pode nos ajudar a achar o problema c: