如何推送位于 Flutter BottomNavigationBar 顶部的全屏页面

ayt*_*nch 7 dart flutter

我到处搜索,找不到答案。

我有一个BottomNavigationBar和一个FloatingActionButton

我想要做的是当用户按下FloatingActionButton.

此页面需要覆盖BottomNavigationBar和 之前的区域,AppBar因为在此新页面中,用户不允许转到 的其他选项卡BottomNavigationBar

我遇到fullscreenDialogPageRouteWidget 类的一个属性,很兴奋,但无法让它完全按照我想要的方式工作(顶部 <-> 底部,我将在后面解释)

此页面将拥有自己的页面ScaffoldAppBar并且能够推送/弹出到下一个屏幕(在它自己的导航树内)

为了弹出这个页面,用户将按下位于页面底部中心的“x”按钮。

我想从顶部<->底部推送/弹出这个新页面,而不是通常的左侧<->右侧导航样式(对于iOS/Cupertino)

我熟悉 iOS 设备的这种类型的 UI( ModalViewController)

那么我们将如何实现 push 和 pop 命令呢?

还是有另一种更好/推荐的方法来做到这一点?

Jon*_*joy 12

我有一个类似的问题,它解决了这个:

await Navigator.of(context, rootNavigator:true).push( // ensures fullscreen
      CupertinoPageRoute(
            builder: (BuildContext context) {
              return MyWidget();
            }
      ) );
Run Code Online (Sandbox Code Playgroud)

位于/sf/answers/3781224191/


Geo*_*rge 8

您应该尝试MaterialPageRoute使用fullscreenDialogprop (docs)

Navigator.of(context).push(new MaterialPageRoute<Null>(
  builder: (BuildContext context) {
    return new AddEntryDialog();
  },
  fullscreenDialog: true
));
Run Code Online (Sandbox Code Playgroud)

可能不是您的最佳方式,但它会出现在底部栏和任何其他导航小部件上方。

代码取自:https : //marcinszalek.pl/flutter/flutter-fullscreendialog-tutorial-weighttracker-ii/