跨端动画优化怎样平衡响应与资源
Flutter 动画卡顿时,先确认卡在哪一段:Dart 线程、布局绘制,还是 GPU 栅格化。把RepaintBoundary、图片缓存和预加载全都打开,并不会自动变快,反而可能增加显存和维护成本。
一个列表项若只有局部状态变化,可以隔离那一小块,而不是把整页包进边界:
class ProgressChip extends StatelessWidget { const ProgressChip({super.key, required this.progress}); final double progress; @override Widget build(BuildContext context) => RepaintBoundary( child: TweenAnimationBuilder<double>( tween: Tween(end: progress), duration: const Duration(milliseconds: 180), builder: (_, value, __) => CircularProgressIndicator(value: value), ), ); }图片要按展示尺寸请求和解码,长列表用ListView.builder。动画优先使用Transform、Opacity等不改变布局的属性;Opacity是否划算仍要结合子树复杂度在真机上看。内存告急时,检查大图、缓存策略和重复解码,别急着把问题归咎于动画。
性能优化最终是取舍:先量测,再改一处,再复测。开发机上的流畅感不是结论。