Search code examples
flutterflutter-web

How to go to another page in flutter


I would like to refresh the "PrincipalView" every time I choose a new project. The PrincipalView has a menu that is the one who has to send the order.

Here you can see the structure

PrincipalView

MenuView

class MenuView extends StatelessWidget {
  late Usuario usuario;
  UsuarioService usuarioService = UsuarioServiceFirebase();
  MenuView({
    required this.usuario,
    Key? key,
  }) : super(key: key);

  @override
  

MenuBuild


  List<Column> crearProyectos(context) {
    
    print(usuario.toJson().toString());
    List<Column> lista = [];
    print(usuario.proyectos!.length);
    for (int i = 0; i < usuario.proyectos!.length; i++) {
      Proyecto p = usuario.proyectos![i];
      lista.add(Column(
        children: [
          DrawerListTile(
            title: usuario.proyectos![i].name,
            press: () {
              usuario.idProyectoActual="$i";
              usuarioService.updateUser(id: usuario.id, u: usuario);
              Navigator.pushReplacement(
                context,
              MaterialPageRoute(
              builder: (BuildContext context) => this));
            
            },
          )
        ],
        
      ));
    }
    return lista;
  }
}

I already try:

Navigator.pushReplacement( context, MaterialPageRoute( builder: (BuildContext context) => this)); Navigator.pop(context); // pop current page Navigator.pushNamed(context, "PrincipalView"); Navigator.push( context, MaterialPageRoute(builder: (context) => PrincipalView(usuario: usuario)), );

This is the error


Solution

  • I just solved the problem, I added the method that created the drawables dynamically to the build and in onPress I called Navigation.push.

    Widget build(BuildContext context) {
        print("MenuView ${usuario.toJson().toString()}");
        List<Column> lista = [];
        print(usuario.proyectos!.length);
        for (int i = 0; i < usuario.proyectos!.length; i++) {
          Proyecto p = usuario.proyectos![i];
          print("CREAR PROYECTOS $i ${p.toJson().toString()}");
          lista.add(Column(
            children: [
              DrawerListTile(
                  title: usuario.proyectos![i].name,
                  press: () {
                    usuario.idProyectoActual = "$i";
                    MenuController m = MenuController();
                  Navigator.of(context).push(
                      // Pass ViewModel down to EditScreen
                      
                      MaterialPageRoute(builder: (context) {
                    return MaterialApp(
                        debugShowCheckedModeBanner: false,
                        title: 'iOrganize',
                        theme: ThemeData.dark().copyWith(
                          scaffoldBackgroundColor: secondBgColor,
                          textTheme: GoogleFonts.poppinsTextTheme(
                                  Theme.of(context).textTheme)
                              .apply(bodyColor: Colors.white),
                          canvasColor: fisrtBgColor,
                        ),
                        home: ChangeNotifierProvider.value(
                          value: m,
                          child: PrincipalView(usuario: usuario),
                        ));
                  }));
                  })
            ],
          ));
        }
        return Drawer("All the code)};