Flutter 性能优化记录

1、尽量避免在 build() 中执行耗时操作,因为build() 会被频繁地调用
2、尽可能地使用 const 构造器,子组件也不会重新进行 rebuild操作
3、尽量避免使用 ListViewGridView的默认构造方法,使用builder方法创建,尽可能的指定itemExtentprototypeItem
4、在Image加载图片的时候尽量指定 cacheWidthcacheHeight 的展示大小
5、如果ListView的item中有图片,需要设置addRepaintBoundariesaddAutomaticKeepAlivesfalse,这样就可以在item滑出屏幕外的时候销毁掉,防止内存溢出
6、如果一个页面中某一个组件一直频繁构建可以用RepaintBoundary来包裹隔离,这样不会整个页面组件都重新构建,但是在页面中尽量少用这个组件,构建它也很消耗性能
7、在低性能手机里可以降级CustomScrollViewListView的预渲染区域
//默认上下250,120可以改成item的高度大小
cacheExtent: 120,
8、透明度不用Opacity可用Color代替 、剪裁不用Clip可用组件的borderRadius属性代替、淡入淡出,请考虑使用 FadeInImage
9、尽量用SizedBox而不是Container,占位组件使用SizedBox.Shrink()
10、在dio请求中,处理json数据可用compute方法放在多线程中进行
11、抽离Widget组件的时候不要用函数返回
Widget _buildFooterWidget() {
  return Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text('This is the footer '),
         );
}
 -------改成-------
class FooterWidget extends StatelessWidget {
  @override
   Widget build(BuildContext context) {
  return Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text('This is the footer '),
         );
      }
}
12、如果只是判断某个条件成立才加载组件可以用if (text != null) Text(text)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容