1
resposta

Implementação do Artigo do Alura+ no projeto do curso.

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.

1 resposta

Incrível Rafael!! Adorei sua implementação c:

Essa pratica que você fez é essencial para produzir aplicativos com maior qualidade, fico muito alegre ao ver um aluno dedicado! Continue o bom trabalho