【发布时间】:2021-04-05 05:19:09
【问题描述】:
我当前的屏幕结构如下所示:
Scaffold(
body: Stack(
children: [
_buildOffstageNavigator(FeedScreen()),
_buildOffstageNavigator(Screen2()),
_buildOffstageNavigator(Screen3()),
],
),
bottomNavigationBar: buildBottomNavigationBar(),
)
BottomNavigationBar 只是一个常规栏。
每个屏幕都用 OffStage() 小部件包裹,如下所示:
Widget _buildOffstageNavigator(Widget screenToBuild) {
return Offstage(
offstage: currentPage != screenToBuild,
child: TabNavigator(
navigatorKey: _navigatorKeys[screenToBuild],
screenToBuild: screenToBuild,
),
);
}
我这样做的目的是确保始终有一个 BottomNavigationBar。
但是,有一个小部件,我想从 FeedScreen() 推送,我不想打开 NavigationBar,但是上下文很难隐藏这个 NavigationBar
这是FeedScreen()的结构
Scaffold(
appBar: buildAppBar(),
body: SingleChildScrollView(
key: PageStorageKey<String>("Feed"),
controller: _feedSC,
child: Column(
children: [
buildStoriesListView(),
buildPostsListView(posts)
],
),
),
)
所以我的问题是:有没有办法将此 Widget 推送到堆栈的“顶部”并忽略上下文,还是在这种情况下我只需要隐藏栏?你会怎么做?
谢谢
【问题讨论】:
-
您想将 (Navigator.push) 从 FeedScreen 推送到另一个小部件?
-
是的,但由于堆栈,目前我正在另一个小部件上获取 NavigationBar。我只想在我正在推送的这个新小部件上避免使用 NavigationBar。
-
NavigationBar,你的意思是Android导航栏? -
不,我的意思是底部导航栏
-
发布
FeedScreen内容
标签: flutter dart flutter-layout flutter-navigation