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
MenuView
class MenuView extends StatelessWidget {
late Usuario usuario;
UsuarioService usuarioService = UsuarioServiceFirebase();
MenuView({
required this.usuario,
Key? key,
}) : super(key: key);
@override
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)), );
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)};