用途:在 Flutter 应用中实现动画效果、过渡与运动,适用于添加视觉反馈、共享元素过渡或基于物理的动画。
主要能力:围绕 Flutter 的类型化 Animation 系统组织动画,不手动计算帧,依赖框架的 ticker 与插值类。核心概念包括 Animation<T>(随时间变化的值抽象,持有 completed、dismissed 状态并通知监听者)、AnimationController(驱动动画,通常生成 0.0 到 1.0 的值,需提供 vsync,通常通过 SingleTickerProviderStateMixin,且必须 dispose() 防止内存泄漏)、Tween<T>(从输入区间到输出类型的无状态映射,可用 .animate() 链接曲线)、Curve(通过 CurvedAnimation 或 CurveTween 应用非线性时序)。
策略选择:简单属性变化(尺寸、颜色、透明度)且无需播放控制时用隐式动画(AnimatedContainer、AnimatedOpacity、TweenAnimationBuilder);需要播放控制(播放、暂停、反向、循环)或协调多个属性时用显式动画(AnimationController 配合 AnimatedBuilder 或 AnimatedWidget);在两个不同路由间动画元素时用 Hero 动画;模拟真实运动(如拖拽后回弹)时用物理动画(SpringSimulation);需要重叠或延迟的运动序列时用交错动画(单个 AnimationController 驱动多个 Tween,配合 Interval 曲线)。
使用方式:隐式动画流程为确定目标属性、替换为动画组件、设置 duration 与可选 curve、在 setState() 中更新属性触发。显式动画流程为添加 mixin、在 initState() 初始化控制器、定义 Tween 并 .animate()、用 AnimatedBuilder 包裹 UI、通过 forward()/reverse()/repeat() 控制、在 dispose() 中释放。Hero 过渡需为源与目标 Hero 设置相同且唯一的 tag,并保持内部组件树视觉相似。物理动画需不设固定 duration,用 GestureDetector 捕获手势速度,转换为属性坐标空间后构造 SpringSimulation,再用 controller.animateWith(simulation) 驱动。
限制:资料未提供安装命令、收费、平台支持或效果保证等信息,暂未提供。