在iOS中,我们有一个UITabBarController,当我们推送到一个新的ViewController时,它会永久停留在屏幕底部。
在Flutter中,我们有一个Scaffold的bottomNavigationBar。但是,与iOS不同,当我们Navigator.push转到新屏幕时,该bottomNavigationBar消失了。
Navigator.push
在我的应用程序,我想满足这一要求:主屏幕上有一个bottomNavigationBar与2项( 一 & b )提示画面 一 & 乙 。默认情况下,屏幕上 一个 显示。在屏幕 A内 ,有一个按钮。点击该按钮, Navigator.push屏幕 Ç 。现在在屏幕 C中 ,我们仍然可以看到bottomNavigationBar。轻按项目 b ,我去屏幕 乙 。现在,在屏幕 乙 ,龙头项目 一 在bottomNavigationBar,我回去屏幕 Ç (不是 一个 , 一个 是目前低于 Ç 在导航层次结构中)。
bottomNavigationBar
我怎样才能做到这一点?多谢你们。
编辑:我包括一些图片进行演示:
屏幕A 屏幕A
点击“ 转到C” 按钮,推至屏幕C 屏幕C
点击底部导航栏中的“ 右” 项目,转到屏幕B 屏幕B
tl; dr:将CupertinoTabBar与CupertinoTabScaffold一起使用
就像RémiRousselet提到的那样,问题不在Flutter中,而在UX中。
事实证明,Material Design不建议使用层次结构中的子页面来访问“底部”导航栏。
但是,《 iOS人机界面指南》建议这样做。因此,要使用此功能,我必须改编Cupertino小部件而不是Material部件。具体来说,主要是返回WidgetsApp/MaterialApp包含的CupertinoTabScaffold。使用来实现选项卡栏,CupertinoTabBar并且每个屏幕都是一个CupertinoTabView。
WidgetsApp/MaterialApp
CupertinoTabScaffold
CupertinoTabBar
CupertinoTabView