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
相关产品推荐
相关产品推荐

