A classe main.dart do curso fica da seguinte forma: Retiramos o atributo home e colocamos o initialRoute.
Definimos o atributo routes e colocamos as navegações entre as telas.
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: "/initialScreen",
routes: {
"/initialScreen" : (context) => InitialScreen(),
"/formScreen": (context) => FormScreen(),
},
);
}
}
O FloatActionButton da classe initial_screen fica da seguinte forma: Substitui-se a navegação antiga pelo pushReplacementNamed. passando o route definido lá na main.dart.
floatingActionButton: FloatingActionButton(
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(
// builder: (context) => FormScreen(),
// ),
// );
Navigator.of(context).pushReplacementNamed("/formScreen");
},
child: const Icon(Icons.add),
),
O mesmo ocorre na classe form_screen.dart, no ElevatedButton adicionar
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
print(nameController.text);
print(int.parse(difficultyController.text));
print(imageControler.text);
ScaffoldMessenger.of(context)
.showSnackBar(const SnackBar(
content: Text('Printando nova tarefa'),
));
Navigator.of(context).pushReplacementNamed("/initialScreen");
}
},
child: const Text('Adicionar'),
),
Um detalhe interessante é que não usamos mais o push e o pop. O pushReplacement substitui a tela, não cria mais a pilha grande.
Um detalhe interessante é que não usamos mais o push e o pop. O pushReplacement substitui a tela, não cria mais a pilha grande.
Também tem a opção do método popAndPushNamed, mas esse eu não cheguei a testar.