Je viens de commencer à travailler avec Flutter et je ne vais pas mentir, c'est incroyable. Un "problème" que j'ai rencontré, cependant, est que lorsque vous appuyez sur la touche de retour, il naviguera vers l'écran précédent. Je sais que c'est ce qui devrait arriver, mais comment puis-je changer cela? De plus, le bouton appBar fait la même chose, donc je cherche un "correctif" pour celui-là également.
Si vous avez besoin d'un code, faites-le moi savoir! Bonne journée et désolé pour les fautes d'orthographe!
3 Réponses :
Vous pouvez utiliser
Navigator.of(context).pushNamedAndRemoveUntil(
'/', (Route<dynamic> route) => false);
Créer une route nommée '/' qui correspond à l'écran principal et c'est fait. Si vous avez d'autres questions, n'hésitez pas à demander
Merci! Très utile!
Tout d'abord, vous devez définir les noms de vos itinéraires dans MaterialApp:
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () {
Navigator.of(context)
.popUntil(ModalRoute.withName("/"));
return Future.value(false);
},
child: Scaffold(
body: Center(
child: Container(
child: Text('third page'),
),
),
),
);
}
Ensuite, vous devez envelopper le Scaffold de la troisième page (ou toute autre page à partir de laquelle vous souhaitez revenir à la HomePage ) avec un WillPopScope pour changer ce qui se passe lorsque l'utilisateur appuie sur le bouton retour. Enfin, vous devez utiliser popUntil pour revenir à la HomePage.
Ceci est le code de la méthode build de la troisième page:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: '/',
routes: {
'/': (context) => MyHomePage(),
'/second': (context) => Page2(),
'/third': (context) => Page3(),
},
);
}
}
Si vous spécifiez la propriété "home" dans MaterialApp, il n'est pas nécessaire de créer une route. La navigation vers l’écran d’accueil peut alors se faire comme ci-dessous:
Navigator.of(context).popUntil(ModalRoute.withName('/'));