Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro na Lista de Contatos - List<Contact>

Bom dia!! Poderiam me ajudar com o erro acima, por gentileza?? Procurei na internet e não encontrei uma solução.

Erro: A value of type 'Object?' can't be assigned to a variable of type 'List'. Try changing the type of the variable, or casting the right-hand type to 'List'

Fiz igual a video aula e consta o erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeVi no fórum que outras pessoas tiverem este mesmo erro, porém nenhuma das soluções funcionou comigo. Segue exemplos que tentei:

  • final List? contacts = snapshot.data; Insira aqui a descrição dessa imagem para ajudar na acessibilidade

  • final List contacts = snapshot.data as List; Esta solução nao apresenta erro até que eu execute o código e clique em contatos Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Como meu código se encontra por completo: https://github.com/NathanSilos/bytebank_alura/tree/main/bytebank

2 respostas
solução!

Oi, você precisa fazer duas alterações no seu código para funcionar caso esteja usando uma versão mais recente do Flutter para realizar o curso.

Primeira alteração

//Troque isto
body: FutureBuilder(

//por isso 
body: FuruteBuilder<List<Contact>>(

Ao fazer isto você já declara que o FutureBuilder vai trabalhar com o tipo List, não precisando de fazer o cast do snapshot.data dentro da função do builder.

Segunda alteração

//Adicione um verificação antes de usar o snapshot.data
builder: (context, snapshot) {
    if (snapshot.hasData) {
        final List<Contact> contacts = snapshot.data!;
        return ListView.builder(
            //codigo
        );
    }
    return Text('Não encontrou nenhum contato');
}

Pelo o que eu entendi, no momento em que a tela é criada a Future, pode não ter finalizado o seu processamento, por tanto o valor do snapshot.data pode ser nulo, caso não tenha sido declarado um valor inicial. Logo é preciso fazer uma verificação se o valor não é nulo antes de atribuir para a variável contacts.

Muito obrigado, funcionou!!!