Flutter:使用导航器推到新屏幕时,保持BottomNavigationBar
问题内容:
在iOS中,我们有一个UITabBarController,当我们推送到一个新的ViewController时,它会永久停留在屏幕底部。
在Flutter中,我们有一个Scaffold的bottomNavigationBar。但是,与iOS不同,当我们Navigator.push
转到新屏幕时,该bottomNavigationBar消失了。
在我的应用程序,我想满足这一要求:主屏幕上有一个bottomNavigationBar
与2项( 一 & b )提示画面 一 & 乙
。默认情况下,屏幕上 一个 显示。在屏幕 A内 ,有一个按钮。点击该按钮, Navigator.push
屏幕 Ç 。现在在屏幕 C中
,我们仍然可以看到bottomNavigationBar
。轻按项目 b ,我去屏幕 乙 。现在,在屏幕 乙 ,龙头项目 一
在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
。