Flutter Animation 技能用于在 Flutter 项目中实现或诊断动画与动效,覆盖隐式动画、显式动画、路由过渡、Hero 动画、交错动画以及基于物理的动画。其核心目标是用动效解释状态变化、层级关系或连续性,并保持动画可中断、可访问。
用途与职责范围 该技能负责动画的时间控制、插值、序列编排、稳定标识与中断处理。对于模糊、玻璃、折射、着色器 uniform 以及光学图层合成等视觉特效,应交给 flutter-visual-effects 处理;当两者同时适用时,由动画状态驱动效果,而不是在渲染器内部重复持有控制器。
机制选择
- 隐式动画:适用于由状态控制的少量属性变化。
- AnimationController:当需要显式管理时间、序列、重复、中断或多个数值时使用。
- Hero:仅当同一概念性元素在多个路由间持续存在且标签保持唯一时使用。
- 自定义绘制或更低层动画:仅当 widget 组合无法高效表达结果时使用。
生命周期与性能 应在拥有动画控制器的状态生命周期中保留控制器,并正确释放。不要在没有性能分析的情况下对大型子树中的布局密集型属性做动画。避免堆叠互不相关的隐式动画,以免时间关系难以推理。
减少动态效果 通过项目兼容的 Flutter API 读取平台无障碍偏好设置。将非必要的动效替换为即时或低动效过渡,同时保留含义与任务完成能力。
验证 在相关情况下测试初始、进行中、已完成、反向、被中断以及减少动效等状态。检查是否存在 ticker 泄漏,并在代表性设备上以 profile 模式对复杂动效进行性能分析。
当涉及动效模式或减少动效时,请遵循动效模式与减少动效参考。