使用SizeTransition实现PageRouteBuilder路由动画无效果求助
问题解决:SizeTransition路由动画无表现的修复
你的代码核心问题是参数设置不符合期望的动画逻辑,导致视觉上没有呈现出预期的底部向上展开效果。以下是修改后的代码及关键说明:
Navigator.push( context, PageRouteBuilder( transitionDuration: Duration(seconds: 2), transitionsBuilder: (context, animation, secondaryAnimation, child) { return SizeTransition( sizeFactor: animation, axis: Axis.vertical, axisAlignment: 1.0, // 从底部开始向上展开 clipBehavior: Clip.hardEdge, // 裁剪溢出内容,避免提前显示未展开区域 child: child, ); }, pageBuilder: (context, animation, secondaryAnimation) { return CreateUpdateNoteView(); }, settings: RouteSettings(arguments: note), ), );
关键修改点:
- axisAlignment: 1.0:垂直方向下,1.0代表子组件底部与父容器底部对齐,当
sizeFactor从0到1过渡时,页面会从底部向上逐步展开,完全匹配你期望的动画效果。 - clipBehavior: Clip.hardEdge:限制页面内容仅在当前展开的区域内显示,避免未完全展开的部分提前溢出到屏幕可视范围外。
同时确保CreateUpdateNoteView的根组件(如Scaffold)未设置固定尺寸约束,让SizeTransition能正确控制其尺寸变化。
内容的提问来源于stack exchange,提问作者Sunken In Time
相关产品推荐
相关产品推荐

