148 votes

Flutter supprimer toutes les routes

Je souhaite développer un bouton de déconnexion qui m'enverra à l'itinéraire de connexion et supprimera tous les autres itinéraires du Navigator . La documentation ne semble pas expliquer comment créer un RoutePredicate ou avoir une sorte de fonction removeAll.

351voto

chrislondon Points 5751

J'ai pu accomplir cela avec le code suivant:

 Navigator.of(context)
    .pushNamedAndRemoveUntil('/login', (Route<dynamic> route) => false);
 

Le secret ici est d'utiliser un RoutePredicate qui retourne toujours faux (Route<dynamic> route) => false . Dans cette situation, il supprime tous les itinéraires, à l'exception du nouvel itinéraire /login j'ai poussé.

114voto

amir khan Points 21

je peux le faire avec l'extrait de code suivant:

  Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context) =>
    LoginScreen()), (Route<dynamic> route) => false),
 

si vous voulez supprimer tout l'itinéraire en dessous de l'itinéraire poussé, RoutePredicate renvoie toujours false , par exemple (Route route) => false .

42voto

nleslie Points 41

Une autre alternative est popUntil()

 Navigator.of(context).popUntil(ModalRoute.withName('/root'));
 

Cela supprimera tous les itinéraires jusqu'à ce que vous soyez de retour sur l'itinéraire nommé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X