我很想知道,当您使用appBar
转到另一个页面时,如果有人知道如何移除显示在Navigator.pushNamed
的广告应用中的后退按钮。我不希望它出现在这个结果页面上的原因是它来自导航,我希望用户改为使用logout
按钮,以便会话重新开始。
答案 0 :(得分:71)
我相信解决方案如下
你实际上是:
不想显示那个丑陋的后退按钮(:]),因此会去:
AppBar(...,automaticallyImplyLeading: false,...)
;
不希望用户返回 - 替换当前视图 - 从而获取:
Navigator.pushReplacementNamed(## your routename here ##)
;
不希望用户返回 - 替换堆栈中的某个视图 - 从而使用:
Navigator.pushNamedAndRemoveUntil(## your routename here ##, f(Route<dynamic>)→bool);
其中f是一个函数,当遇到你想要保留在堆栈中的最后一个视图(在新的视图之前)时返回true
;
不希望用户返回 - EVER - 完全清空导航器堆栈:
Navigator.pushNamedAndRemoveUntil(context, ## your routename here ##, (_) => false);
干杯
答案 1 :(得分:60)
没有名为popNamed
的方法。我认为你的意思是pushNamed
。
您可以将空new Container()
作为leading
参数传递到AppBar
,从而删除后退按钮。
但是,如果您发现自己这样做,您可能不希望用户能够按设备的后退按钮返回到之前的路线。不要调用pushNamed
,而是尝试调用Navigator.pushReplacementNamed
以使之前的路线消失。
后一种方法的完整代码示例如下。
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(),
},
);
}
}
答案 2 :(得分:43)
删除AppBar中后退按钮的一种简单方法是将automaticallyImplyLeading
设置为false
。
appBar: AppBar(
title: Text("App Bar without Back Button"),
automaticallyImplyLeading: false,
),
答案 3 :(得分:8)
将其用于条状AppBar
SliverAppBar (
automaticallyImplyLeading: false,
elevation: 0,
brightness: Brightness.light,
backgroundColor: Colors.white,
pinned: true,
),
将其用于常规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,
),
答案 4 :(得分:7)
//如果要隐藏后退按钮,请使用以下代码
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(),
),
);
}
}
//如果要隐藏后退按钮并停止弹出操作,请使用以下代码
class SecondScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new 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);
},
),
],
)
),
),
);
}
答案 5 :(得分:5)
AppBar小部件具有一个名为Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
$Form = New-Object system.Windows.Forms.Form
$Form.ClientSize = '700,700'
$Form.text = "test"
$TextBox1 = New-Object system.Windows.Forms.RichTextBox
$TextBox1.multiline = $true
$TextBox1.width = 599
$TextBox1.height = 500
$TextBox1.ReadOnly = $true
$TextBox1.location = New-Object System.Drawing.Point(12,5)
$Form.controls.AddRange($TextBox1)
# Test scriptblock
$Scriptblock = {
param([ref]$TextBox1)
$TextBox1.AppendText("This doesn't work")
}
# Create the runspace
$Runspace = [runspacefactory]::CreateRunspace()
$Runspace.ApartmentState = [System.Threading.ApartmentState]::STA
$Runspace.Open()
# create the PS session and assign the runspace
$PS = [powershell]::Create()
$PS.Runspace = $Runspace
# add the scriptblock and add the argument as reference variables
$PS.AddScript($Scriptblock)
$PS.AddArgument([ref]$TextBox1)
# Invoke the scriptblock
$PS.BeginInvoke()
$Form.ShowDialog()
的属性。默认情况下,其值为automaticallyImplyLeading
。如果您不希望Flutter自动为您建立后退按钮,则只需设置属性true
。
false
添加自定义后退按钮
appBar: AppBar(
title: Text("YOUR_APPBAR_TITLE"),
automaticallyImplyLeading: false,
),
答案 6 :(得分:4)
如果导航到另一个页面。可以使用Navigator.pushReplacement()
。如果您要从登录导航到主屏幕,则可以使用它。或者您可以使用。
AppBar(automaticallyImplyLeading: false)
答案 7 :(得分:1)
只想在@Jackpap答案上添加一些描述:
自动立即领先
这检查我们是否要在应用程序栏上应用后退小部件(前导小部件)。 如果automaticImplyLeading为false,则将自动为标题提供空格;如果前导部件为true,则此参数无效。
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!"),
),
),
),
),
);
}
答案 8 :(得分:0)
SliverAppBar( 自动暗示领先:假,}
答案 9 :(得分:-1)
appBar: new AppBar(title: new Text("SmartDocs SPAY"),backgroundColor: Colors.blueAccent, automaticallyImplyLeading:false,
leading: new Container(),
),
工作正常