You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用PageRouteBuilder时pop动画时长比push短怎么解决

问题根因

你仅为PageRouteBuilder配置了正向push阶段的动画时长参数transitionDuration,而pop返回阶段的反向动画时长由独立的reverseTransitionDuration参数控制。未显式配置该参数时,系统会默认使用主题自带的路由动画时长(通常为300毫秒),和你设置的1000毫秒正向时长差距较大,所以会出现动画速度不一致、卡顿的问题。

修复方法

在你的_buildTransitionToMonthPage方法中,给PageRouteBuilder新增reverseTransitionDuration配置,和正向动画时长保持一致即可:

static PageRouteBuilder _buildTransitionToMonthPage(Month month) {
    return PageRouteBuilder(
      transitionDuration: Duration(milliseconds: 1000),
      // 新增反向动画时长配置,和正向时长保持一致
      reverseTransitionDuration: 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);
      },
    );
  }

修改后pop返回时,动画会以相同的时长反向执行,和Hero动画也能自然对齐,不会出现衔接问题。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 11:36:04