Para os colegas que estão tendo o problema que depois de salvar a tarefa e retornar a tela inicial, a lista não é atualizada com a nova tarefa, aqui vai a explicação e como resolver: Isso está acontecendo porque há um erro no projeto da aula que permite que o setState() e, consequentemente o findAll(), seja executado antes mesmo de concluir o save/insert no banco. Então quando a lista da tela inicial é recriada, a nova tarefa ainda não está no banco. Para resolver é bem simples: basta fazer com que se aguarde a conclusão do save() antes de retornar a tela inicial com o Navigator.pop(context). Para isso basta tornar assíncrona a função que chama o save() e o Navigator.pop (no caso é o onPressed do ElevatedButton). E depois usar await na chamada de save().
ElevatedButton(
onPressed: () async {
if (_formKey.currentState!.validate()) {
await TaskDao().save(Task(
nameController.text,
imageController.text,
int.parse(difficultyController.text)));
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Criando uma nova Tarefa'),
),
);
Navigator.pop(context);
}
},
child: Text('Adicionar!'),
),