// 避免不必要的重建 class MyWidget extends StatelessWidget { final String text; MyWidget(this.text); @override Widget build(BuildContext context) { return Text(text); } }问题:使用 StatefulWidget 时,可能会触发不必要的状态更新和重建。
Future<void> computeExpensiveTask() async { final result = await compute(expensiveFunction, arguments); // 更新 UI } int expensiveFunction(List<int> arguments) { // 执行计算密集型任务 }问题:在 UI 线程执行计算密集型任务会导致应用卡顿。
优化效果:保持了 UI 的流畅性,提高了应用响应速度。
class MyStatefulWidget extends StatefulWidget { @override _MyStatefulWidgetState createState() => _MyStatefulWidgetState(); } class _MyStatefulWidgetState extends State<MyStatefulWidget> { int _counter = 0; void _incrementCounter() { setState(() { _counter++; }); } @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('You have pushed the button this many times: $_counter'), RaisedButton( onPressed: _incrementCounter, child: Text('Increment'), ), ], ); } }问题:在 setState 中频繁更新状态可能导致性能下降。
# 在 pubspec.yaml 中配置图像压缩 flutter: assets: - images/my_image.png - images/my_other_image.webp问题:未压缩的图像资源可能导致 APK 大小增加。
优化效果:减少了 APK 大小,加快了应用安装速度。
// 使用 Dart 的扩展方法 extension StringExt on String { String capitalize() => this[0].toUpperCase() + this.substring(1); } // 堆代码 duidaima.com // 使用 Dart 的不可变对象 final List<int> immutableList = List.unmodifiable([1, 2, 3]);问题:代码冗余或不合理的数据结构可能导致性能下降。
优化效果:代码更简洁,性能有所提升。
// 在代码中添加性能分析标记 void _someFunction() { FlutterError.onError = (FlutterErrorDetails details) { // 处理错误 }; // 执行性能敏感的代码 }问题:难以识别性能瓶颈。
优化效果:能够精准定位并优化性能瓶颈,提高应用的整体性能。
# 在 pubspec.yaml 中配置代码分割 flutter: split-per-abi: true问题:APK 文件过大可能导致用户下载和安装时间较长。
优化效果:减少了 APK 的大小,加快了用户的下载和安装速度。
当然了,总是会有一些大佬开源出一些优秀的插件,官方也会放出相关插件,来帮助我们提高自己的 Flutter应用程序,下面是我搜集的一些比较优秀的插件,大家可以参考一下,当然你们若是有更好的插件,也可以分享在评论区。
Freddy 是一个性能分析工具,它可以生成性能报告并提供优化建议,帮助开发者提高 Flutter 应用的性能。