I am wondering, if anyone knows of a way to remove the back button that shows up on the appBar in a flutter app when you use Navigator.pushNamed to go to another page. The reason I do not want it on this resulting page is that it is coming from the navigation and I want users to use the logout button instead, so that the session starts over.
19 Answers 19
I believe the solutions are the following
You actually either:
Don't want to display that ugly back button ( :] ), and thus go for :
AppBar(...,automaticallyImplyLeading: false,...);Don't want the user to go back - replacing current view - and thus go for:
Navigator.pushReplacementNamed(## your routename here ##);Don't want the user to go back - replacing a certain view back in the stack - and thus use:
Navigator.pushNamedAndRemoveUntil(## your routename here ##, f(Route<dynamic>)→bool);where f is a function returningtruewhen meeting the last view you want to keep in the stack (right before the new one);Don't want the user to go back - EVER - emptying completely the navigator stack with:
Navigator.pushNamedAndRemoveUntil(context, ## your routename here ##, (_) => false);
5 Comments
automaticallyImplyLeading: false is the answer i'm looking for..Navigator.of(Get.context!) .pushNamedAndRemoveUntil('/home', (Route<dynamic> route) => false); workedA simple way to remove the back button in the AppBar is to set automaticallyImplyLeading to false.
appBar: AppBar(
 title: Text("App Bar without Back Button"),
 automaticallyImplyLeading: false,
),
 3 Comments
Navigator.pushReplacementNamed is the correct solution. What you suggest is a workaround that if applied in all scenarios, may eventually infer wrong behavior, like somewhere that someone would like that the AppBar continues to imply the leading behavior (i.e.: back navigation button)You can remove the back button by passing an empty new Container() as the leading argument to your AppBar.
If you find yourself doing this, you probably don't want the user to be able to press the device's back button to get back to the earlier route. Instead of calling pushNamed, try calling Navigator.pushReplacementNamed to cause the earlier route to disappear.
The function pushReplacementNamed will remove the previous route in the backstack and replace it with the new route.
Full code sample for the latter is below.
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(),
 },
 );
 }
}
 6 Comments
pushReplacementNamed() dispose previous screen widget (and all depending data & states)?automaticallyImplyLeading:
This checks whether we want to apply the back widget(leading widget) over the app bar or not. If the automaticallyImplyLeading is false then automatically space is given to the title and if If the leading widget is true, then this parameter has no effect.
void main() {
 runApp(
 new MaterialApp(
 home: new Scaffold(
 appBar: AppBar(
 automaticallyImplyLeading: false, // Used for removing back buttoon. 
 title: new Center(
 child: new Text("Demo App"),
 ),
 ),
 body: new Container(
 child: new Center(
 child: Text("Hello world!"),
 ),
 ),
 ),
 ),
 );
} 
 1 Comment
just use automaticallyImplyLeading in AppBar()
appBar: AppBaar(
 automaticallyImplyLeading: false,
)
 Comments
If you want to hide back button use below code
class SecondScreen extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return Scaffold(
 appBar: AppBar(
 title: Text('Remove Back Button'),
 //hide back button
 automaticallyImplyLeading: false,
 ),
 body: Center(
 child: Container(),
 ),
 );
 }
}
If you want to hide back button and stop the pop action use below code
class SecondScreen extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return WillPopScope(
 onWillPop: () async => false,
 child: Scaffold(
 appBar: AppBar(
 title: Text("Second Screen"),
 //For hide back button
 automaticallyImplyLeading: false,
 ),
 body: Center(
 child: Column(
 mainAxisAlignment: MainAxisAlignment.center,
 crossAxisAlignment: CrossAxisAlignment.center,
 children: <Widget>[
 RaisedButton(
 child: Text('Back'),
 onPressed: () {
 Navigator.pop(context);
 },
 ),
 ],
 )),
 ),
 );
 }
}
 Comments
Use this for slivers AppBar
SliverAppBar (
 automaticallyImplyLeading: false,
 elevation: 0,
 brightness: Brightness.light,
 backgroundColor: Colors.white,
 pinned: true,
 ),
Use this for normal Appbar
 appBar: AppBar(
 title: Text
 ("You decide on the appbar name"
 style: TextStyle(color: Colors.black,), 
 elevation: 0,
 brightness: Brightness.light,
 backgroundColor: Colors.white,
 automaticallyImplyLeading: false,
),
 Comments
The AppBar widget has a property called automaticallyImplyLeading. By default it's value is true. If you don't want flutter automatically build the back button for you then just make the property false.
appBar: AppBar(
 title: Text("YOUR_APPBAR_TITLE"), 
 automaticallyImplyLeading: false,
),
To add your custom back button
appBar: AppBar(
 title: Text("YOUR_APPBAR_TITLE"), 
 automaticallyImplyLeading: false,
 leading: YOUR_CUSTOM_WIDGET(),
),
 Comments
If navigating to another page . Navigator.pushReplacement() can be used. It can be used If you're navigating from login to home screen. Or you can use .
 AppBar(automaticallyImplyLeading: false)
Comments
There is a property in the appbar:
automaticallyImplyLeading: false 
Make this true so you will get back button.
Comments
SliverAppBar( automaticallyImplyLeading: false,}
Comments
in your appBar, put automaticallyImplyLeading in false :
 @override
 Widget build(BuildContext context) {
 return Scaffold(
 appBar: AppBar(
 automaticallyImplyLeading: false,
 Comments
it is easy find the button in main.dart or any place as I set in main.dart
change this
 Navigator.push(
to
Navigator.pushReplacement(
Comments
When you use Navigator.pushNamed the back-arrow appears automatically on the new screen's appBar for going back to the previous screen. If you don't want this functionality all you have to do is write automaticallyImplyLeading: false in your appBar properties.
Comments
AppBar widget automatically includes a back button when the current screen has been pushed onto the navigation stack. If you want to remove this back button, you have a few options depending on your needs and the structure of your app.
Option 1: Use automaticallyImplyLeading Property
AppBar(
 automaticallyImplyLeading: false,
 // Other AppBar properties
)
Option 2: Custom Leading Widget
AppBar(
 leading: Container(), // Effectively removes the back button, but can be any widget.
 // Other AppBar properties
)
Option 3: Modifying the Navigation Logic
For example, using Navigator.pushReplacement or Navigator.pushAndRemoveUntil to navigate to a new page won't add a back button because the previous page is removed from the stack.
Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context) => NewPage()));
 1 Comment
Just Make it transparent, and no action while pressend
AppBar(
 leading: IconButton(
 icon: Icon(
 Icons.arrow_back,
 color: Colors.white.withOpacity(0),
 ),
 onPressed: () {},
 ),
 Comments
If you want to remove space as well set titleSpacing:0 .
 appBar: AppBar(
 title: Text("How do you rate us?"),
 automaticallyImplyLeading: false,
 titleSpacing: 0,
 actions: [
 IconButton(
 onPressed: () {
 Navigator.pop(context);
 },
 icon: Icon(Icons.close))
 ],
 ),
 Comments
in flutter >= 3.10 set automaticallyImplyLeading: false,
1 Comment
 appBar: new AppBar(title: new Text("SmartDocs SPAY"),backgroundColor: Colors.blueAccent, automaticallyImplyLeading:false,
 leading: new Container(),
 ),
It is working Fine
1 Comment
Explore related questions
See similar questions with these tags.