flowchart LR
A[Tela de Lista] -->|botão Nova| B[Tela de Formulário]
B -->|salvar válido| A
Atividade de Recuperação — Módulos 01 a 06
Esta é a sua atividade de recuperação. Ela é individual e você a fará no laboratório, no tempo da aula. Quero que você comece tranquilo: você não vai construir um aplicativo do zero. Eu já preparei um projeto que abre, compila e roda, com as duas telas montadas e a navegação no lugar. O que está faltando são quatro pequenos trechos de código, e cada um deles corresponde a um conceito que estudamos nos Módulos 01 a 06. Seu trabalho é completar esses quatro trechos, marcados no código com um comentário // TODO. Nada além disso.
Leia esta página inteira antes de digitar a primeira linha. Cada tarefa abaixo mostra o trecho que você precisa completar e explica, em palavras, o que ele deve fazer. O código que aparece está incompleto de propósito: a parte que falta é exatamente o que está sendo avaliado, então é você quem escreve.
Como funciona: trabalho individual, no laboratório. Você pode consultar os materiais dos Módulos 01 a 06 e o resumo de estudo. Abra o projeto, rode para confirmar que tudo sobe, e então complete os quatro // TODO. Ao final, o aplicativo deve cadastrar uma tarefa e mostrá-la na lista.
O aplicativo
O projeto se chama Minhas Tarefas e tem duas telas: uma lista de tarefas e um formulário para cadastrar uma tarefa nova. O botão da lista abre o formulário; ao salvar uma tarefa válida, o aplicativo volta para a lista mostrando a tarefa criada. Toda essa estrutura já está pronta. Você só precisa fazer as quatro peças que faltam funcionarem.
Tarefa 1 — Rodar o projeto (Módulo 01)
Abra o projeto no VS Code e execute-o antes de qualquer outra coisa. Você deve ver a tela de lista, ainda vazia. Se o aplicativo não subir, resolva isso primeiro: nada do resto pode ser avaliado sem o projeto rodando. Esta tarefa não exige escrever código, apenas confirmar que o seu ambiente está funcionando.
Tarefa 2 — Concluir uma tarefa (Módulo 02)
Cada tarefa na lista tem um botão de concluir, que já está pronto. O que falta é a regra que marca a tarefa como concluída quando esse botão é tocado. No arquivo lib/dados/repositorio_tarefas.dart, o método concluir já encontra a posição da tarefa pelo seu id. Complete-o para substituir aquela tarefa por uma cópia marcada como concluída, usando o método copyWith da entidade, e em seguida avisar a lista com notifyListeners(). Lembre-se de que a tarefa é imutável: você não altera a tarefa existente, você a substitui por uma cópia.
Tarefa 3 — Mostrar a tarefa na lista (Módulos 03 e 04)
No arquivo lib/telas/tela_lista.dart, a lista já percorre as tarefas com um ListView.builder, e o botão de concluir já está pronto no método _botaoConcluir. Falta dizer o que cada item mostra. Complete o item para retornar um ListTile que exibe o título da tarefa daquela posição e que usa o botão de concluir já pronto na sua lateral.
Tarefa 4 — Validar o campo do formulário (Módulo 06)
No arquivo lib/telas/tela_formulario.dart, o campo de texto do título já existe, mas o validator está vazio. Complete-o para que um título vazio seja recusado e para que títulos com menos de três caracteres também sejam recusados, devolvendo uma mensagem de erro nesses casos e null quando o título for válido.
Quanto tempo dedicar a cada parte
Use a divisão abaixo como referência. Se travar em uma tarefa, passe para a próxima e volte depois: é melhor entregar três tarefas funcionando do que ficar preso em uma só.
| Tempo | Tarefa |
|---|---|
| 0–10 min | Rodar o projeto (Tarefa 1) |
| 10–30 min | Concluir tarefa (Tarefa 2) |
| 30–50 min | Item da lista (Tarefa 3) |
| 50–65 min | Validação (Tarefa 4) |
| 65–80 min | Navegação (Tarefa 5) e teste final |
Como saber que terminou
Ao completar as quatro peças de código, rode o aplicativo e faça o caminho inteiro: na lista, toque no botão de adicionar, preencha um título válido no formulário, salve e veja a tarefa aparecer na lista. Toque no botão de concluir ao lado da tarefa e confirme que ela passa a aparecer como concluída. Teste também um título inválido, deixando o campo vazio, e confirme que a mensagem de erro aparece e o salvamento é bloqueado. Se esse fluxo funciona, sua atividade está completa.
Antes de entregar, confira os quatro pontos que mais custam nota: o método concluir deve substituir a tarefa por uma cópia com copyWith e chamar notifyListeners(); o item da lista precisa mostrar o título de verdade, não um texto fixo; o validator precisa devolver null quando o título é válido; e a navegação deve usar o nome da rota, não um construtor de tela.
Entrega
Ao final do tempo, rode o seguinte na pasta raiz do projeto:
- Abra o cmd
- Vá até a pasta do projeto
- Execute
flutter clean - Compacte a pasta para uma rquivo ZIP
- Entregue o arquivo zipado na tarefa do Teams.