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

Erro ao carregar tarefas

Olá Meu codigo esta dando um erro

// ignore_for_file: file_names

import 'package:curso_1/components/task.dart';
import 'package:curso_1/data/task_dao.dart';
import 'package:curso_1/screens/form_screen.dart';
import 'package:flutter/material.dart';

class InitialScreen extends StatefulWidget {
    const InitialScreen({super.key});

  @override
  State<InitialScreen> createState() => _InitialScreenState();
}

class _InitialScreenState extends State<InitialScreen> {

  @override
  Widget build(BuildContext context) {
    return 
Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.blue,
          
          leading: Container(
            
          ),
          actions: [
            IconButton(onPressed: (){setState(() {
              
            });}, icon: const Icon(Icons.refresh))
          ],
          title: const Text(
            'Tarefas',
            style: TextStyle(color: Colors.white),
          ),
        ), 
        body: Padding(
        padding: const EdgeInsets.only(top: 8, bottom: 70),
        child: FutureBuilder<List<Task>>(
            future: TaskDao().findAll(),
            builder: (context, snapshot) {
              List<Task>? items = snapshot.data;
              switch (snapshot.connectionState) {
                case ConnectionState.none:
                  return const Center(
                    child: Column(
                      children: [
                        CircularProgressIndicator(),
                        Text('Carregando'),
                      ],
                    ),
                  );

                case ConnectionState.waiting:
                  return const Center(
                    child: Column(
                      children: [
                        CircularProgressIndicator(),
                        Text('Carregando'),
                      ],
                    ),
                  );
                case ConnectionState.active:
                  return const Center(
                    child: Column(
                      children: [
                        CircularProgressIndicator(),
                        Text('Carregando'),
                      ],
                    ),
                  );
                case ConnectionState.done:
                  if (snapshot.hasData && items != null) {
                    if (items.isNotEmpty) {
                      return ListView.builder(
                          itemCount: items.length,
                          itemBuilder: (BuildContext context, int index) {
                            final Task tarefa = items[index];
                            return tarefa;
                          });
                    }
                    return const Center(
                        child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: [
                        Icon(
                          Icons.error_outline,
                          size: 128,
                        ),
                        Text(
                          'Não há nenhuma Tarefa',
                          style: TextStyle(fontSize: 32),
                        ),
                      ],
                    ));
                  }
                  return const Text('Erro ao carregar tarefas');
              }
            }),
      ),
        floatingActionButton: FloatingActionButton(
          onPressed: (){
            Navigator.push(
              context, 
              MaterialPageRoute(
                builder: (contex) => FormScreen(taskContext: context,),
              ),
            ).then((value) => setState(() {
              
            }));
          },
            child: const Icon(Icons.add),
        ),
      );
      
  }
}

Não esta aparecendo a mensagem igual a do video Insira aqui a descrição dessa imagem para ajudar na acessibilidade

11 respostas

Oii Gilvan, tudo bem?

Vi que você finalizou o curso! Ainda está com problemas?

Por favor, peço que compartilhe seu código completo no GitHub, assim fica melhor pra te ajudar.

Um abraço.

Olá, sim ainda estou com o mesmo problema

Ola!

Por favor, peço que compartilhe seu código completo no GitHub, assim fica melhor pra te ajudar.

Abraços.

Olá Segue o codigo no github

https://github.com/GilvanGabrielCA/flutter_curso_1

Gilvan vc tb está com esse mesmo erro? no método toList não consegui usar o line para cada um dos meus parâmentros igual o Kako fez, pois dá um erro que no dele não deu. Você conseguiu?

List toList(List<Map<String, dynamic>> mapDeTarefas) { print('Printa a informação corretamente: Convertendo o mapa em uma lista, função toList() iniciando'); final List tarefas = [];

for (Map<String, dynamic> line in mapDeTarefas) {
  print('Printa essa informção corretamente');
  final CardPatientInformation cardTest = CardPatientInformation(
    line[_name],
    line[_anoNascimento],
    line[_motherName],
    line[_startDate],
    line[_endDate],
    line[_doctor],
    line[_doctor],
  );
  print('Não consegue chegar até aqui, não printa no terminal.');
  tarefas.add(cardTest); // Adicionando cada tarefa convertida à lista
}

print('Lista de tarefas: $tarefas');
return tarefas;

}

O erro abaixo: ![Insira aqui a descrição dessa imagem para ajudar na acessibilidade](https://cdn1.gnarususercontent.com.br/1/463841/d9583b7f-c08f-4987-859c-0ce30aafcf0a.png)  

O erro da imagem abaixo:

abaixo

The named parameter 'endDate' is required, but there's no corresponding argument. (Documentation) Try adding the required argument.

The named parameter 'startDate' is required, but there's no corresponding argument. (Documentation) Try adding the required argument.

The named parameter 'anoNascimento' is required, but there's no corresponding argument. (Documentation) Try adding the required argument.

The named parameter 'doctor' is required, but there's no corresponding argument. (Documentation) Try adding the required argument.

The named parameter 'name' is required, but there's no corresponding argument. (Documentation) Try adding the required argument.

The named parameter 'motherName' is required, but there's no corresponding argument. (Documentation) Try adding the required argument.

The named parameter 'doctor' is required, but there's no corresponding argument. (Documentation) Try adding the required argument.

Olha o erro: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Nelson, abra um tópico novo senão vai ficar muito confuso aqui com duas pessoas mandando erros.

solução!

Oii Gilvan!

Você tem códigos diferentes para o arquivo initial_screen.dart no fórum e no GitHub.

O do GitHub funciona perfeitamente aqui. Porém não nos ajuda muito pois esse código parece ser de uma etapa mais inicial da aula, ou mesmo de outro curso, pois não há "persistência de dados" aplicada, apenas é guardado um estado (tanto que se fechar o app e abrir de novo, não está mais lá).

Pra testar o código que você mandou na entrada no fórum, colei o que enviou substituindo o que estava em initial_screen.dart.

O debug console apontou que esse problema tá rolando na chamada do findAll, quando chama o getDatabase(), que chama o db.execute;

Eu consegui resolver mudando a string tableSql para:

static const String tableSql =
      'CREATE TABLE $_tablename ($_name TEXT, $_difficulty INTEGER, $_image TEXT)';

O problema era uma , depois do último TEXT que não devia existir. Daí, precisa desinstalar o app do emulador/dispositivo físico, e rodar de novo pra ele construir o banco do zero.

E prontinho, funciona!

Ah, e Initial_screen.dart está escrito com letra maíuscula no I, apesar de funcionar, é uma má prática.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade


Se persistirem os sintomas, é sempre bom:

  • Rodar um flutter clean;
  • Mudar a versão do sqflite (no pubspec.yaml) para sqflite: ^2.3.3+1
  • Rodar (no terminal) um flutter pub upgrade --major-versions
  • Rodar (no terminal) um flutter --version, se o flutter dele estiver abaixo da 3.19.6 (stable atual), ele rodar um flutter upgrade, esperar terminar, fechar tudo e abrir de novo.
  • Corrigir a vírgula.
  • Desinstalar e reinstalar o app no emulador ou dispositivo físico.

Lembre que você pode consultar o código da aula aqui no repositório GitHub. E explorar as branches que estão divididas por aula:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Espero que te ajude.

Um abraço e bons estudos.