flutter enlever le bouton de retour sur appbar
je me demande si quelqu'un sait comment enlever le bouton arrière qui apparaît sur le appBar
dans un flottement application lorsque vous utilisez Navigator.popNamed
goto une autre page, la raison pour laquelle je ne veux pas de ça sur cette page qui en résulte est que le son provenant de la navigation et je veux les utilisateurs à utiliser le logout
bouton à la place de sorte que la session recommence.
N'importe quelle aide serait bonne.
Merci d'avance
4 réponses
Il n'y a pas de méthode appelée popNamed
. Je suppose que tu voulais dire pushNamed
.
vous pouvez enlever le bouton arrière en passant un < vide!--3-->leading
argument AppBar
.
cependant, si vous vous trouvez à faire cela, vous ne voulez probablement pas que l'utilisateur puisse appuyer sur le bouton arrière de l'appareil pour revenir à la route précédente. Au lieu d'appeler pushNamed
, essayez de l'appeler Navigator.pushReplacementNamed
pour cause la première voie pour disparaître.
exemple de code Complet pour cette dernière approche est ci-dessous.
import 'package:flutter/material.dart';
class LogoutPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Logout Page"),
),
body: new Center(
child: new Text('You have been logged out'),
),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Remove Back Button"),
),
floatingActionButton: new FloatingActionButton(
child: new Icon(Icons.fullscreen_exit),
onPressed: () {
Navigator.pushReplacementNamed(context, "/logout");
},
),
);
}
}
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
home: new MyHomePage(),
routes: {
"/logout": (_) => new LogoutPage(),
},
);
}
}
je crois que les solutions sont les suivantes
Tu fait:
Je ne veux pas afficher ce bouton arrière laid (:), et donc aller pour :
AppBar(...,automaticallyImplyLeading: false,...)
;Ne voulez pas que l'utilisateur de revenir en arrière remplacement de la vue actuelle - et ainsi de suite:
Navigator.pushReplacementNamed(## your routename here ##)
;Ne voulez pas que l'utilisateur de revenir en arrière remplacement d'un certain point de vue de retour dans la pile - et ainsi l'utiliser:
Navigator.pushNamedAndRemoveUntil(## your routename here ##, f(Route<dynamic>)→bool);
où f est une fonction retournanttrue
lorsque vous rencontrez la dernière vue que vous voulez garder dans la pile (juste avant la nouvelle);Ne voulez pas que l'utilisateur de revenir en arrière jamais - vidange complète de la pile du navigateur avec:
Navigator.pushNamedAndRemoveUntil(context, ## your routename here ##, (_) => false);
Cheers
une façon simple d'enlever le bouton back dans la barre D'Apps est de mettre automatiquementmplyleading à false.
appBar: new AppBar(title: new Text("App Bar without Back Button", automaticallyImplyLeading: false,),
Set automatically implyleading false dans la barre d'applications
appBar: new AppBar(
title: new Text("Your Text Here"),
automaticallyImplyLeading: false,
),