J'ai plusieurs page.
1. Page de démarrage
2. Page 2
3. Page 3
4. Menu principal
De 1 -> 2. et 2 -> 3. j'utilise ceci pour la navigation:
Navigator.of(context).Push(new MaterialPageRoute<MyPage>(
builder: (BuildContext context) {
return new MyPage();
},
));
et pour 3 -> 4. Je veux utiliser ceci (remplacement de push, ne reviendra pas), mais cela ne fonctionne pas et agit comme un push normal:
Navigator
.of(context)
.pushReplacement(new MaterialPageRoute(builder: (BuildContext context) {
return new MainMenuPage();
}));
Déroutant.
je pense que vous ne voulez pas aller avec l'écran n ° 3 si l'utilisateur est une fois atteindre l'écran n ° 4, vous pouvez utiliser Navigator.pop (context); avant le transfert du contrôle vers l'écran n ° 4.
Eh bien, pushReplacement()
n'est pas censé vous empêcher de revenir à n'importe quelle page. Comme son nom l'indique, il remplace la nouvelle page que vous essayez d'ouvrir avec la page actuelle dans la pile de routes.
Par exemple, lorsque vous êtes sur la deuxième page, utilisez la méthode pushReplacement()
et ouvrez la troisième page, lorsque vous appuyez sur le bouton de retour, vous accédez à la première page et sautez la deuxième page.
Pour le rendre plus clair, vous pouvez naviguer vers la quatrième page comme ceci:
[ 1 --Push()--> 2 --pushReplacement()--> 3 --pushReplacement()--> 4]
et lorsque vous appuyez sur le bouton de retour, vous accédez à la première page.
Maintenant, si vous voulez contrôler le backButton dans Android vous pouvez utiliser la méthode WillPopScope()
.
Bien que votre solution WillPopScope fonctionnera et soit la solution appropriée pour certains workflows de navigation, je trouve que la racine du problème gagne un meilleur contrôle sur le Flutter Navigator
, en s'assurant en particulier que le bouton Précédent et ce qui devrait être sur la pile Navigator
, à n'importe quelle action utilisateur donnée dans une application utilise des routes nommées pour toutes les navigations, cet article est un excellent guide pour déclarer Routes
puis utiliser des routes nommées avec le navigateur pour garantir cette pile Navigator contient toujours les itinéraires exacts que vous souhaitez pour un flux de navigation donné:
https://medium.com/flutter-community/flutter-Push-pop-Push-1bb718b13c31