Flutter 制作 pop 动画,其持续时间与 Push 相同

标签 flutter dart routes push transition

我使用 HeroPageRouteBuilder 在两个屏幕之间通过动画进行导航。问题是我的 pop 动画比我的 push 短得多,而且看起来有点笨拙。这是一个ScreenVideo为了更好的理解。

这就是我构建推送的方式:

static PageRouteBuilder _buildTransitionToMonthPage(Month month) {
    return PageRouteBuilder(
      transitionDuration: Duration(milliseconds: 1000),
      pageBuilder: (BuildContext context, Animation<double> animation,
          Animation<double> secondaryAnimation) {
        return MonthPage(
          month: month,
        );
      },
      transitionsBuilder: (BuildContext context, Animation<double> animation,
          Animation<double> secondaryAnimation, Widget child) {
        return FadeTransition(opacity: animation, child: child);
      },
    );
  }
}

在另一个屏幕上,我只需调用Navigator.pop(context)。我在这里缺少什么?难道不应该简单地反转动画持续时间吗?

最佳答案

基于documentation对于 PageRouteBuilder,对于属性 transitionDuration,它表示:“过渡向前的持续时间。” 最初,它设置为 300ms 持续时间(检查源代码)。

this.transitionDuration = const Duration(milliseconds: 300)

此外,还有一个 reverseTransitionDuration 属性,其中规定:反向过渡的持续时间。” 最初,其值与transitionDuration

this.reverseTransitionDuration = const Duration(milliseconds: 300),

您为什么会遇到此问题?

您已将正向转换设置为 1000 毫秒,而反向转换仍为 300 毫秒。因此,添加 reverseTransitionDuration: const Duration(1000) 将解决您的问题。

关于Flutter 制作 pop 动画,其持续时间与 Push 相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67901464/

相关文章:

dart - 如何在 Flutter 中加载超大图片?

flutter - 这可能是一个错误,因为 Provider 不会自动更新依赖项

flutter - 在 TextFormField 中禁用单词下划线

dart - BottomNavigationBarItem 中添加的四个图标不起作用

arrays - 在 Flutter 中将我的帖子更改为 JSON 数组

async-await - Flutter,异步调用后渲染小部件

ruby-on-rails - Rails 应用程序在路线助手中的父子 ID 错误

routes - TYPO3 路由 : how does Custom Aspect works?

javascript - 用 Dart 将单词单数化

c# - .net 路由开头的可选参数