删除某些页面上的默认后退箭头

Posted

技术标签:

【中文标题】删除某些页面上的默认后退箭头【英文标题】:Removing the default back arrow on certain pages 【发布时间】:2018-01-05 23:34:08 【问题描述】:

据我了解,默认情况下导航到任何页面后都会出现一个后退箭头。有没有办法不在我选择的某个页面上包含后退箭头?

【问题讨论】:

【参考方案1】:

在 AppBar 中将 automaticallyImplyLeading 设置为 false 或在 leading

中分配 empty container

使用自动ImplyLeading

appBar: new AppBar(
   title: new Text("Your Text Here"), 
   automaticallyImplyLeading: false,
),

使用空容器

appBar: new AppBar(
   title: new Text("Your Text Here"), 
   leading: new Container(),
),

【讨论】:

【参考方案2】:

要隐藏后退按钮,请将Appbar的automaticallyImplyLeading属性设置为false

new Scaffold(
            appBar: new AppBar(
              automaticallyImplyLeading: false,
            )
)

【讨论】:

【参考方案3】:

https://***.com/a/44978595/3013538 的副本

我认为解决方案如下

你实际上是:

不想显示那个丑陋的后退按钮 (:]),因此选择: AppBar(...,automaticallyImplyLeading: false,...);

不希望用户返回 - 替换当前视图 - 因此选择: Navigator.pushReplacementNamed(## your routename here ##);

不希望用户返回 - 将某个视图替换回堆栈中 - 因此使用: Navigator.pushNamedAndRemoveUntil(## your routename here ##, f(Route<dynamic>)→bool); 其中 f 是一个函数返回true当遇到你想保留在堆栈中的最后一个视图(就在新视图之前);

不希望用户返回 - EVER - 完全清空导航器堆栈: Navigator.pushNamedAndRemoveUntil(## your routename here ##, (_) => false);

干杯

【讨论】:

【参考方案4】:

根据AppBar docs

如果前导小部件被省略,... 否则,如果最近的 Navigator 有任何先前的路由,则插入 BackButton。

所以你可以用这种方式隐藏它

new Scaffold(
          appBar: new AppBar(
            title: new Text("Without back button"),
            leading: new Container(),
          ),
        );

【讨论】:

非常感谢 如果页面被用作应用程序的主页(没有Navigator.push),这似乎会导致显示后退按钮通常所在的空白区域的副作用。 automaticallyImplyLeading: false,正如 Fabio 在另一个答案中所建议的那样,似乎是一个优雅的解决方案。

以上是关于删除某些页面上的默认后退箭头的主要内容,如果未能解决你的问题,请参考以下文章

在导航栏中将后退按钮更改为向下箭头

在导航栏中将后退按钮更改为向下箭头

带有默认页面的JS后退按钮

导航栏后退按钮箭头字体 Swift

Android设备上的Expo App某些onPress()未触发

某些页面上的后退按钮导航不能立即生效,但经过多次点击后