Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Minha ListView não atualiza

Olá, depois que refatorei o código no final do curso de fundamentos, o meu listview não atualiza e não mostra nenhuma transação realizada.

Segue o código:

lista.dart

import 'package:bytebank/modelos/transferencia.dart';
import 'package:bytebank/telas/transferencias/formulario.dart';
import 'package:flutter/material.dart';

const _tituloAppBar = 'Transferências';

class ListaTransferencias extends StatefulWidget {
  final List<Transferencia> _transferencias = [];

  @override
  State<StatefulWidget> createState() {
    return ListaTransferenciasState();
  }
}

class ListaTransferenciasState extends State<ListaTransferencias> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text(_tituloAppBar),
      ),
      body: ListView.builder(
        itemCount: widget._transferencias.length,
        itemBuilder: (context, indice) {
          final transferencia = widget._transferencias[indice];
          return ItemTransferencia(transferencia);
        },
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: () {
          Navigator.push(context, MaterialPageRoute(builder: (context) {
            return FormularioTransferencia();
          })).then((transferenciaRecebida) {
            _atualiza(transferenciaRecebida);
          });
        },
      ),
    );
  }

  void _atualiza(Transferencia transferenciaRecebida) {
    if (transferenciaRecebida != null) {
      setState(() => widget._transferencias.add(transferenciaRecebida));
    }
  }
}

void setState(Function() param0) {}

// ignore: camel_case_types
class ItemTransferencia extends StatelessWidget {
  final Transferencia _transferencia;

  ItemTransferencia(this._transferencia);

  @override
  Widget build(BuildContext context) {
    return Card(
      child: ListTile(
        leading: Icon(Icons.monetization_on),
        title: Text(_transferencia.valor.toString()),
        subtitle: Text(_transferencia.numeroConta.toString()),
      ),
    );
  }
}
1 resposta
solução!

Oi Luiz, tudo bem?

Pelo que entendi, você refatorou o código e agora sua ListView não está atualizando. Uma possível solução seria verificar se a função _atualiza está sendo chamada corretamente após a adição da nova transferência.

Outra sugestão seria verificar se a lista _transferencias está sendo atualizada corretamente. Para isso, você pode adicionar um print na função _atualiza para verificar se a transferência recebida está sendo adicionada corretamente à lista.

Por fim, verifique se não há nenhum erro de digitação ou de lógica que possa estar impedindo a atualização da ListView.

Um abraço e bons estudos.