359 字
2 分钟
Flutter App 的优化小记
2024-11-12

Performance

主要耗时#

  • flutter:Animator:RequestFrame - 动画
  • flutter:Runtime:Controller - 负责控制Flutter应用的运行时
  • TimelineTask.start - 时间线任务
  • Tween.transform - 动画计算
  • GrowableList - 列表内存分配

建议#

动画#

  • 使用 RepaintBoundary:对于需要频繁重绘的区域,可以使用 RepaintBoundary 来隔离重绘范围,避免整个屏幕重绘。
  • 优化 Tween.transform:确保动画插值逻辑简单且高效。复杂的动画可以通过减少帧率或降低插值计算复杂度来优化。

GrowableList.add/toList#

  • 预先分配列表大小:如果可以预估列表大小,尽量避免动态扩展列表。使用 List.filled() 或者指定初始容量来减少内存分配次数。
  • 减少集合操作:尽量减少对集合(如 GrowableList)的频繁操作,尤其是在性能关键路径中。如果必须使用集合操作,可以考虑使用更高效的数据结构,如 Set 或者 Map

TimelineTask.start#

  • 避免不必要的任务启动:检查是否有不必要或重复启动的任务。可以通过懒加载或延迟初始化来减少任务启动次数。

避免过多的UI重绘#

  • 确保在UI更新时,只更新需要变化的小部分,而不是整个界面。可以通过使用 shouldRepaint() 方法来控制哪些部分需要重新绘制。
  • ref.watch(provider).property => ref.watch(provider.select((p) => p.property))
  • setState 影响的范围缩小到最小
  • 使用 const 构造函数
Flutter App 的优化小记
https://blog.lpkt.cn/posts/a-flutter-app-opt/
作者
lollipopkit
发布于
2024-11-12
许可协议
CC BY-NC-SA 4.0