在底部导航栏上推送新屏幕时出现 Flutter Transition 动画问题

标签 flutter flutter-navigation flutter-cupertino

我有一个 MaterialApp,其中有一个 IndexedStack 作为主页,用于 BottomBarNavigation。现在,在其中一个“选项卡”中,我希望像在 iOS 中那样完成页面转换。

部分技巧可以使用 Navigator.push 中的 CupertinoPageRoute 完成,如下所示:

Navigator.of(context, rootNavigator: true).push(CupertinoPageRoute<bool>(
      //fullscreenDialog: true,
      builder: (BuildContext context) => new DescriptionPage(),

    ));

这导致新页面作为 iOS 应用程序从右侧滑动。但是,我还希望第一页以视差向右移动,正如 CupertinoPageRoute 的文档中所说:

The page also shifts to the left in parallax when another page enters to cover it.

如果第一页本身是通过“Navigator.push(CupertinoPageRoute ...”创建的,这将完成,但正如我提到的,我的第一页是应用程序主页的主要页面之一。

当前的过渡样式: the new page slides in from right, but the current page does not shift to left

如您所见,当前页面并没有向左移动。可能有一种方法可以使当前页面的小部件充当由 CupertinoPageRoute 构建的小部件,以便当前页面本身在新页面进入时向左滑动。

最佳答案

在 MaterialApp 的 theme: 参数中,试试这个:

MaterialApp(
  theme: ThemeData( //or replace with your custom ThemeData.copywith()
    pageTransitionsTheme: PageTransitionsTheme(
      builders: {
        TargetPlatform.android: CupertinoPageTransitionsBuilder(),
        TargetPlatform.iOS: CupertinoPageTransitionsBuilder()
      }
    ),
  ),
)

关于在底部导航栏上推送新屏幕时出现 Flutter Transition 动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61349628/

相关文章:

android - Flutter Navigator 2.0 - 从 URL 启动应用程序时路由器没有收到深层链接?

dart - 有谁知道如何向 Cupertino SliverAppBar 添加渐变背景?

ios - 是否可以为 CupertinoTabScaffold 的选项卡之间的过渡设置动画?

firebase - 无法将 FirebaseUser photoUrl 设置为 null

flutter 弹出直到到达模态底部表单

flutter - 在 null Fluro 上调用了方法 'dependOnInheritedWidgetOfExactType'

flutter - 显示键盘时如何隐藏cupertinoTabBar?或者如何让键盘盖住酒吧?或者始终将标签栏保持在底部?

android - Flutter:无状态小组件中的 “Looking up a deactivated widget'祖先是不安全的

在 flutter 中下载文件

flutter - 我如何从外部小部件访问内部小部件的动画 Controller (或状态)?