Olá,
Tou meio grilado aqui com uma coisa que está acontecendo que há um bug apenas, e só apenas na primeira tentativa de adicionar uma tarefa. A mesma não é renderizada na lista, quando se faz o Navigator.pop(context)
.
Porém ao testar da segunda vez em diante, o app funciona normal..
No meu InitialScreen tenho:
class _InitialScreenState extends State<InitialScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: Container(),
title: const Text('Task UP!'),
),
body: ListView(
children: TaskInherited.of(context).taskList,
padding: EdgeInsets.only(top: 8, bottom: 70),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (contextNew) => FormScreen(taskContext: context)));
},
child: const Icon(Icons.add),
),
);
}
}
No meu FormScreen tenho o contexto da InitialScreen declarado para receber no construtor normalmente:
final BuildContext taskContext;
FormScreen({Key? key, required this.taskContext}) : super(key: key);
E ainda no FormScreen, adiciono normalmente a task no contexto armazendo da InitialScreen:
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
TaskInherited.of(widget.taskContext).addNewTask(
descTaskController.text,
imageController.text,
int.parse(diffController.text));
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Saving new Task'),
),
);
}
Navigator.pop(context);
},
child: Text('Add'))
Já tentei aqui algumas vezes fazer isso funcionar na primeira tentativa de adicionar a tarefa mas nunca adiciona :(
Obs: algumas variáveis mudei de nome, mas a lógica é idêntica.