6
respostas

Erro ao listar contatos

Boa tarde, estou listando os contatos salvos no banco, porem recebo esse exception, como posso contornar essa situação ?

Launching lib\main.dart on Android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...
√  Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...
Debug service listening on ws://127.0.0.1:61716/xGBirOslEME=/ws
Syncing files to device Android SDK built for x86...
D/EGL_emulation(19511): eglMakeCurrent: 0x9be7ad00: ver 2 0 (tinfo 0x9e87f550)

════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following _CastError was thrown building FutureBuilder<List<dynamic>>(dirty, state: _FutureBuilderState<List<dynamic>>#d2cb6):
type 'List<dynamic>' is not a subtype of type 'List<Contato>' in type cast

The relevant error-causing widget was: 
  FutureBuilder<List<dynamic>> file:///C:/projetos-java/flutter_app_bytebank/lib/screens/lista_contatos.dart:16:13
When the exception was thrown, this was the stack: 
#0      ListaContatos.build.<anonymous closure> (package:flutter_app_bytebank/screens/lista_contatos.dart:20:65)
#1      _FutureBuilderState.build (package:flutter/src/widgets/async.dart:775:55)
#2      StatefulElement.build (package:flutter/src/widgets/framework.dart:4691:27)
#3      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4574:15)
#4      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
...
════════════════════════════════════════════════════════════════════════════════════════════════════
6 respostas

Pessoal mais de 20 horas e não temos uma resposta do suporte, complicado...

Bom dia, pessoal somos alunos precisamos de auxilio, tem dois dias e nao temos uma resposta nesse topico. Qual procedimento ?

Suporte ao aluno está de excelência @Alura parabéns pela dedicação, mais de 2 semanas sem respostas!

Bom dia William, perdão pela demora.

Cara você pode nos mandar o código da sua lista_contatos.dart?

Ao que parece tem um erro de compatibilidade em alguma Lista que você ta fazendo. O que parece é que você chamou uma Lista dinamica quando era pra ter chamado uma lista de Contatos no Future Builder, mas só consigo confirmar e te explicar o erro com precisão se eu ver seu código antes.

Fico no aguardo :)

Bom dia, desculpe a demora estava ausente, segue o código!

import 'package:flutter/material.dart';
import 'package:flutter_app_bytebank/database/app_database.dart';
import 'package:flutter_app_bytebank/model/contato.dart';
import 'package:flutter_app_bytebank/screens/formulario_contato.dart';

class ListaContatos extends StatelessWidget {
final List<Contato> contatos=[];


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Lista de contas'),
      ),
      body: FutureBuilder(
        initialData: [],
          future:Future.delayed(Duration(seconds: 1)).then((value) => findAll()),
          builder:(context,snapshot){

            if (snapshot.hasData) {
              final List<Contato> listaDeContatos = snapshot.data as List<Contato>;
              return ListView.builder(
                itemBuilder: (context, index) {
                  final Contato objetoContato = listaDeContatos[index];
                  return _ContatoItem(objetoContato);
                },
                itemCount: listaDeContatos.length,
              );
            }

            return CircularProgressIndicator(); //Android loading Widget




      },
      ),


      floatingActionButton: FloatingActionButton(
        onPressed: () {
          Navigator.of(context)
              .push(
                MaterialPageRoute(
                  builder: (context) => FormularioContato(),
                ),
              )
              .then(
                (novoContato) => debugPrint(novoContato.toString()),
              );
        },
        child: Icon(Icons.add),
      ),
    );
  }
}


class _ContatoItem extends StatelessWidget{

  final Contato contato;

  _ContatoItem(this.contato);

  @override
  Widget build(BuildContext context) {
   return  Card(
      child: ListTile(
        title: Text(
          contato.nome,
          style: TextStyle(fontSize: 24),
        ),
        subtitle: Text(
          contato.conta.toString(),
          style: TextStyle(fontSize: 16),
        ),
      ),
    );
  }


}

bom dia @kako dei o mesmo prazo que levei para responder e eu estava em viajem mas esse suporte da Alura é pessimo é de uma qualidade baixissima então assim vocês colaboram para que alunos que estão iniciando parem ou troque de plataforma para uma que tenha mais responsabilidade, porque com certeza vai ser um erro no código e é esse o motivo de eu ser aluno e vocês instrutores mas falta muita responsabilidade de vocês para conosco, obrigado, nem precisa responder mais isso eu não tenho esse tempo todo para perder aguardando vocês não como suporte deixa transparecer, obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software