1
resposta

Meu codigo ainda esta dando erro na lista de contatos. Podem ajudar

class ContactsList extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Contacts'), backgroundColor: Theme.of(context).primaryColor, ), body: FutureBuilder<List>( initialData: [], future: Future.delayed(Duration(seconds: 1)).then((value) => findAll()), builder: (context, snapshot) { final contacts = (snapshot.data as List); return ListView.builder( itemBuilder: (context, index) { final Contact contact = contacts[index]; return _ContactItem(contact); }, itemCount: contacts.length, ); return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: const [ CircularProgressIndicator(), Text('Loading') ],) ); }, ), floatingActionButton: FloatingActionButton( onPressed: () { Navigator.of(context) .push( MaterialPageRoute( builder: (context) => ContactForm(), ), ) .then( (newContact) => debugPrint( newContact.toString(), ), ); }, child: const Icon(Icons.add), ), ); } }

Insira aqui a descrição dessa imagem para ajudar na acessibilidade erro lista de contato

1 resposta

Fala Alexandre!

Esse curso foi feito com Flutter antes da versão 2.10 e algumas coisas mudaram um pouco. Essa lista precisa ser um StatefulWidget por conta do FutureBuilder.

Outro problema está no casting que você fez da lista:

final contacts = (snapshot.data as List);

O problema é que snapshot.data pode vir nulo, então uma garantia é fazer uma verificação antes usando uma função do snapshot, que é a snapshot.hasData. Outra coisa é passar o tipo certo para a variável contacts e o generics da lista.

Ficaria algo mais ou menos assim:

if(snapshot.hasData) {
    final List<Contact> contacts = snapshot.data as List<Contact>;
}

Outra coisa que faltou você usar é o snapshot.connectionState para checar o estágio que está o carregamento da requisição do Future. No curso o instrutor ensina como usar esses connection states.

Espero ter ajudado! Um abraço!