当前位置: 首页 > news >正文

【Flutter】性能优化总结

【Flutter】性能优化总结

Flutter 性能优化是提升应用流畅度、响应速度和用户体验的关键。可以从以下几个方面进行优化:


一、UI 构建与布局优化

1、避免不必要的重建

  • 使用 const 构造函数:如 const Text('Hello'),可以减少 Widget 重建。
  • 使用 const 修饰静态 Widget 树
  • 拆分大 Widget 树:将大的 build 函数拆分成多个小组件。

2、使用 RepaintBoundary

  • 将频繁变化的组件用 RepaintBoundary 包裹,减少不必要的重绘区域。
RepaintBoundary(child: YourWidget(),
);

RepaintBoundary 是 Flutter 中非常重要的性能优化工具,它的核心作用是隔离重绘区域,从而减少不必要的重绘,提高性能。好处如下:

  • 减少不必要的重绘;
  • 提升复杂页面性能;
  • 配合性能调试工具;
  • 缓存机制(图层缓存);

3、避免嵌套过深的布局

  • LayoutBuilderMediaQueryFlexible 替代部分嵌套 ContainerPadding

二、列表渲染优化

1、使用 ListView.builder 替代 ListView

  • 懒加载构建每一个 item,避免一次性渲染所有 item。

2、使用 AutomaticKeepAliveClientMixin 保持页面状态

  • 避免 Tab 切换时频繁 rebuild。
class MyPage extends StatefulWidget {_MyPageState createState() => _MyPageState();
}class _MyPageState extends State<MyPage>with AutomaticKeepAliveClientMixin {bool get wantKeepAlive => true;
}

三、图像优化

1、使用 flutter_cache_manager 缓存图片

  • 避免网络重复加载大图。

2、用合适的分辨率加载图片

  • 尽量使用 WebP 或压缩后的图片资源。

3、用 FadeInImage.memoryNetwork 替代 Image.network

  • 提供占位图,有加载过渡动画,体验更好。

四、性能工具使用

1、使用 DevTools 分析性能

  • CPU/内存快照(Memory、CPU Profiler)
  • 重绘区域(Performance Overlay)
  • Widget rebuild 追踪(Rebuild Tracker)
flutter run --profile
flutter pub global activate devtools

五、状态管理优化

1、避免 setState 影响全局

  • setState() 控制在局部组件范围,避免刷新整个 widget 树。
  • 使用更轻量级的状态管理工具如 ProviderRiverpodValueNotifier 等。

六、异步任务与卡顿处理

1、大任务用 compute()Isolate

  • 避免在 UI 线程中执行大量计算/IO,如 JSON 解析。
compute(parseJson, jsonString);

2、异步加载使用 FutureBuilderAsyncSnapshot

  • 显示 loading 状态,避免空白或卡死页面。

七、网络优化

1、Dio 加缓存插件(如 dio_http_cache

  • 避免重复网络请求,提高响应速度。

2、合理使用 Gzip、缓存策略、分页加载

  • 尤其在图片、长列表、分页数据中非常有效。

八、代码和资源清理

  • 删除未使用的资源、图片、字体等
  • 精简依赖包,避免引入体积大但功能冗余的库
  • 使用 flutter build apk --split-per-abi 减小安装包体积

九、总结表格

优化方向推荐做法
Widget 构建const、拆分组件、RepaintBoundary、避免嵌套
列表性能使用 ListView.builderkeepAlive
图片优化缓存、压缩、WebP、占位图
状态管理避免全局 setState,用 Provider/Riverpod
异步任务computeIsolate,避免主线程阻塞
工具分析DevTools、Performance Overlay、Widget Inspector
网络优化缓存、分页、Gzip、压缩响应
减小包体积删除未用资源、依赖优化、APK 分包

十、关于作者(ZFJ_张福杰)

  • 官网:https://zfjsafe.com
  • 博客:https://zfj1128.blog.csdn.net
  • Github:https://github.com/zfjsyqk
  • Gitee:https://gitee.com/zfj1128
  • 打赏:https://zfjsafe.com/paycode
http://www.xdnf.cn/news/1031383.html

相关文章:

  • Flutter 与原生技术(Objective-C/Swift,java)的关系
  • Java-46 深入浅出 Tomcat 核心架构 Catalina 容器全解析 启动流程 线程机制
  • 负载均衡器:Ribbon和LoadBalance
  • NY248NY254美光科技闪存NY258NY261
  • [架构之美]解决Windows 10主机与Windows 10虚拟机之间无法拖拽复制问题
  • 使用 Flutter 在 Windows 平台开发 Android 应用
  • MATLAB提供的两种画误差矩阵的函数
  • 矩阵混剪系统源码搭建全流程技术解析,矩阵OEM
  • 篇章七 论坛系统——业务开发——前端
  • 山东大学软件学院项目实训:基于大模型的模拟面试系统项目总结(十)
  • PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
  • Javaweb学习——day3(Servlet 中处理表单数据)
  • GO语言---匿名函数
  • 2025-06-14【视觉】视频转化为图集
  • linux-部署go开发环境
  • 【Flutter】程序报错导致的灰屏总结
  • 华为云Flexus+DeepSeek征文 | 模型即服务(MaaS)安全攻防:企业级数据隔离方案
  • Elasticsearch高效文章搜索实践
  • git-build-package 工具代码详细解读
  • Spark DAG、Stage 划分与 Task 调度底层原理深度剖析
  • MySQL EXPLAIN 详解
  • 【LUT技术专题】4DLUT代码讲解
  • 【系统分析师】2009年真题:综合知识-答案及详解
  • 【卫星通信】卫星与5G深度融合的架构研究——释放非地面网络潜能,构建全球无缝连接【3GPP TR 23.700-19 V0.1.0 (2025-04)】
  • 本地 MySQL 环境连接问题排查与解决笔记
  • 文件同步·使用同步软件来管理文件(外接大脑)
  • 项目拓展-简易SQL监控,P6SPY拦截所有jdbc连接并打印执行SQL
  • 三维重建 —— 4. 三维重建基础与极几何
  • LeetCode 第73题:矩阵置零
  • 区块链与人工智能的融合:从信任到智能的IT新引擎