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

Não consigo roda o app

Inicialmente tive um problema com o FutureBuilder, o qual estava dando erro em final List contacts = snapshot.data, imagino que foi devido a minha versão do flutter ser 2.5.2. Consegui resolver olhando aqui mesmo no forum com a seguinte codigo:

`class ContactsList extends StatelessWidget {

const ContactsList({Key? key}) : super(key: key);

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Contacts'), ),

  body: FutureBuilder<List<Contact>>(
    future: findAll(),
    builder: (context, snapshot) {
      final List<Contact>? contacts = snapshot
          .data; // usado null safe na lista pois é regra da nova versão do flutter
      if (contacts != null) {
        //feito if para validar nulo
        return ListView.builder(
          itemBuilder: (context, index) {
            final Contact contact = contacts[index];
            return _ContactItem(contact);
          },
          itemCount: contacts.length,
        );
      }

      return Container();
    },
  ),
  floatingActionButton: FloatingActionButton(
    onPressed: () {
      Navigator.of(context)
          .push(
            MaterialPageRoute(
              builder: (context) => const ContactForm(),
            ),
          )
          .then(
            (newContact) => debugPrint(newContact.toString()),
          );
    },
    child: const Icon(Icons.add),
  ),
);

} }`

O qual não entendi o porque do return Contanier(); 

Enfim o meu problema é que quando compilo o codigo e clico em Contacts, para adicionar em um novo contato me direciona para esse arquivo exception_impl.dart, apontando para o seguinte erro
![Erro em amarelo](https://cdn1.gnarususercontent.com.br/1/874304/c0e8de1b-bfbb-45b0-96e3-1ec7eefb7539.png)  

Me deixando preso na tela de lista Contacts, não me deixa clicar na seta pra voltar e nem para adicionar um contato novo


https://github.com/Pedro-Balestra/SegundoProjeto_CursoAlura
3 respostas

Coloque o erro que aparece no 'Debug Console' (se for VSCode). O print que colocou não especifica o erro.

Verificando seu código de acesso ao banco de dados app_database.dart: Vocẽ criou como account_number

Future<Database> createDatabase() {
  return getDatabasesPath().then(
    (dbPath) {
      final String path = join(dbPath, 'bytebank.db');
      return openDatabase(path, onCreate: (db, version) {
        db.execute('CREATE TABLE contacts('
            'id INTEGER PRIMARY KEY, '
            'name TEXT, '
            'account_number INTEGER)');
      }, version: 1);
    },
  );
}

mas acessa como accountNumber:


Future<List<Contact>> findAll() {
  return createDatabase().then((db) {
    return db.query('contact').then((maps) {
      final List<Contact> contacts = [];
      for (Map<String, dynamic> map in maps) {
        final Contact contact =
            Contact(map['id'], map['name'], map['accountNumber']);
        contacts.add(contact);
      }
      return contacts;
    });
  });

Segue o print do Debug console Insira aqui a descrição dessa imagem para ajudar na acessibilidadeFiz a possivel correção, porem ainda persiste o erro

solução!

Reveja os nomes. A tabela criada é contacts mas você está usando contact no FindAll.