【发布时间】:2018-09-12 16:30:09
【问题描述】:
在 iOS 中,当我们推送到新的 ViewController 时,我们有一个 UITabBarController 永久保持在屏幕底部。
在 Flutter 中,我们有一个 Scaffold 的 bottomNavigationBar。但是,与 iOS 不同的是,当我们Navigator.push 到一个新屏幕时,这个bottomNavigationBar 会消失。
在我的应用程序中,我想满足这个要求:主屏幕有一个 bottomNavigationBar 和 2 个项目 (a & b) 呈现屏幕 A & B。默认情况下会显示屏幕A。在屏幕A内,有一个按钮。点击该按钮,Navigator.push 以屏幕 C。现在在屏幕C中,我们仍然可以看到bottomNavigationBar。点击项目b,我进入屏幕B。现在在屏幕B中,点击bottomNavigationBar中的项目a,我回到屏幕C(不是A,A 当前在导航层次结构中位于 C 之下)。
我该怎么做?谢谢各位。
编辑:我包含一些图片用于演示:
屏幕 A Screen A
点击转到C按钮,推到屏幕C Screen C
点击底部导航栏中的右项,转到屏幕B Screen B
【问题讨论】:
-
你所说的
button是在BottomNavigationBar里面吗? -
不,按钮不在底部栏中。它在主屏幕内。这只是触发
Navigator到push到新屏幕的东西。 -
我认为这更像是一个用户体验问题。因为你的 C 视图不应该有底部导航栏。或者,应该可以从该底部栏访问 C。
-
同一层次中的屏幕能够拥有底部导航栏不是很常见吗?以 Twitter 为例(请打开 iOS Twitter 应用程序),点击一条推文,
TweetViewController被推送,底部栏仍然可见。我认为几乎所有流行的应用都有这种行为。 -
我同意 Harry 的说法,这在 iOS 中是很常见的事情,而 TBH Flutter 为整个屏幕设置动画的方式实际上与 iOS 处理导航栏的方式有点相反——尽管 iOS
modal popup输入屏幕时会覆盖导航栏。
标签: flutter navigator bottomnavigationview