navigation - orden - ocultar barra de navegacion android
aleteo quitar el botón Atrás en la barra de la aplicación (3)
Me pregunto si alguien sabe de una forma de eliminar el botón Atrás que aparece en la barra de la aplicación en una aplicación de aleteo cuando usas Navigator.popNamed para ir a otra página, la razón por la que no la quiero en esta página resultante es que está por venir desde la navegación y quiero que los usuarios usen el botón de cerrar sesión para que la sesión comience nuevamente.
Cualquier ayuda sería genial.
Gracias por adelantado
No hay un método llamado popNamed
. Supongo que te referías a pushNamed
.
Puede quitar el botón Atrás pasando un new Container()
vacío new Container()
como argumento leading
a su AppBar
.
Sin embargo, si te encuentras haciendo esto, probablemente no quieras que el usuario pueda presionar el botón Atrás del dispositivo para volver a la ruta anterior. En lugar de llamar a pushNamed
, intente llamar a Navigator.pushReplacementNamed
para que desaparezca la ruta anterior.
La muestra de código completo para este último enfoque está debajo.
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(),
},
);
}
}
Una forma sencilla de eliminar el botón Atrás en AppBar es establecer automáticamente Impeling en falso.
appBar: new AppBar(title: new Text("App Bar without Back Button", automaticallyImplyLeading: false,),
Creo que las soluciones son las siguientes
Usted en realidad:
No quiero mostrar ese feo botón de retroceso (:]), y así ir por:
AppBar(...,automaticallyImplyLeading: false,...)
;No quiero que el usuario regrese - reemplazando la vista actual - y por lo tanto vaya por:
Navigator.pushReplacementNamed(## your routename here ##)
;No quiere que el usuario regrese - reemplazando una cierta vista en la pila - y así use:
Navigator.pushNamedAndRemoveUntil(## your routename here ##, f(Route<dynamic>)→bool);
donde f es una función que devuelvetrue
cuando se encuentra con la última vista que desea mantener en la pila (justo antes de la nueva);No quiero que el usuario regrese - SIEMPRE - vaciando completamente la pila del navegador con:
Navigator.pushNamedAndRemoveUntil(## your routename here ##, (_) => false);
Aclamaciones