SuperAPI AI 工具集

flutter-performance

通用与其它

查看项目

更新于 10-16 08:49

技能介绍

用途:识别、测量并修复 Flutter 应用的性能问题,包括帧卡顿、Widget 重建、列表性能、图片加载、启动时间、包体积与内存。其协议为:先测量 → 定位瓶颈 → 施加最小针对性修复 → 再测量,禁止优化未经性能分析的代码。

目标指标:帧渲染时间 <16ms(60fps)或 <8ms(120fps);中端 Android 启动到首帧 <2s;内存无持续堆增长(无泄漏);发布 APK 体积多数应用 <15MB。

主要能力与用法:

  1. 在 profile 模式测量:flutter run --profile,并用 dart devtools 打开 DevTools。关注 Performance 帧图(UI 线程红条为 Dart 卡顿,Raster 线程为 GPU/着色器卡顿)、CPU Profiler 火焰图、Memory 锯齿状 GC 与持续增长(泄漏)、Widget 重建统计。
  2. Widget 重建分析:为编译期常量补 const;把 setState 移到真正需要的最底层;Riverpod 用 ref.watch(provider.select(...)) 缩小监听范围;动画组件加 RepaintBoundary;用 AnimatedBuilder 或 ValueListenableBuilder 驱动动画。
  3. 列表性能:用 ListView.builder;列表项提供稳定 ValueKey(item.id);混排用 CustomScrollView + slivers;对昂贵项谨慎使用 AutomaticKeepAliveClientMixin。
  4. 图片性能:指定 width/height;网络图用 cached_network_image;缩略图用 BoxFit.cover;通过 CDN 服务端缩放;复杂路径的 flutter_svg 在主线程栅格化,图标优先用图标字体或预栅格 PNG。
  5. 启动性能:用 addPostFrameCallback 延后非关键初始化;用 flutter run --trace-startup --profile,输出 build/start_up_info.json 可在 chrome://tracing 打开;保持 main.dart 导入最小。
  6. 包体积:flutter build appbundle --analyze-size、flutter build apk --split-per-abi、flutter build ipa --analyze-size;清理未用依赖、压缩资源、使用矢量图标。
  7. 内存:在 dispose() 关闭流与控制器;Riverpod 用 ref.onDispose;大列表分页;限制 imageCache.maximumSizeBytes。

限制:需在 profile 模式而非 debug 模式测量;具体端到端效果取决于应用实现。资料未提供支持的平台版本、安装方式、收费与价格信息。