Flutter elimina todas las rutas
Quiero desarrollar un botón de cierre de sesión que me envíe a la ruta de inicio de sesión y elimine todas las demás rutas del archivo Navigator
. La documentación no parece explicar cómo crear RoutePredicate
o tener algún tipo de función removeAll.
Aceptado
Pude lograr esto con el siguiente código:
Navigator.of(context)
.pushNamedAndRemoveUntil('/login', (Route<dynamic> route) => false);
El secreto aquí es usar un RoutePredicate que siempre devuelve false (Route<dynamic> route) => false
. En esta situación, elimina todas las rutas excepto la nueva /login
ruta que presioné.
Puedo hacerlo usando el siguiente fragmento de código:
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) =>
LoginScreen()), (Route<dynamic> route) => false);
Si desea eliminar todas las rutas debajo de la ruta enviada, RoutePredicate siempre devuelve false , por ejemplo (Route route) => false .