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

13
demandé sur biniam_Ethiopia 2017-07-07 22:18:03

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(),
      },
    );
  }
}
30
répondu Collin Jackson 2017-07-07 19:45:29

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 retournant true 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

18
répondu Fabio Veronese 2018-05-06 09:05:25

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,),
9
répondu Jackpap 2017-08-24 14:54:44

Set automatically implyleading false dans la barre d'applications

appBar: new AppBar(
   title: new Text("Your Text Here"), 
   automaticallyImplyLeading: false,
),
1
répondu goops17 2018-06-28 20:50:06