如何将小部件推送到上下文之外?

How to push a widget outside of context?

我当前的屏幕结构如下所示:

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)
          ],
        ),
      ),
    )

所以我的问题是:有没有办法将这个小部件推到堆栈的“顶部”并忽略上下文,或者在这种情况下我是否只需要隐藏栏?你会怎么做?

谢谢

您可以用 Navigator 包裹 Scaffold 并使用 Navigator.of(context, rootNavigator: true).push(PageRouteBuilder(pageBuilder: (context, _, __) => Foo()));Foo 小部件推到所有内容之上。