Keframe之列表流畅度优化
这是一个通用的流畅度优化方案,通过分帧渲染优化由构建导致的卡顿,例如页面切换或者复杂列表快速滚动的场景。


监控工具来自:fps_monitor
指标详细信息:页面流畅度不再是谜!调试神器开箱即用,Flutter FPS检测工具
未优化的代码
import 'package:flutter/material.dart';
class ListViewPage2 extends StatefulWidget {
  @override
  _ListViewState2 createState() => _ListViewState2();
}
class _ListViewState2 extends State {
  List<String> goodsList = [];
  @override
  void initState() {
    super.initState();
    for (int i = 0; i < 40; i++) {
      goodsList.add('${i}');
    }
  }
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
        itemCount: goodsList.length,
        itemBuilder: (BuildContext context, int index) {
          String model = goodsList[index];
          return Container(
              height: 40,
              color: Colors.greenAccent,
              padding: EdgeInsets.only(left: 16, top: 16),
              child: Text('子ListView 条目$model'));
        });
  }
}
复制代码优化的代码
import 'package:flutter/material.dart';
import 'package:keframe/frame_separate_widget.dart';
class ListViewPage extends StatefulWidget {
  @override
  _ListViewState createState() => _ListViewState();
}
class _ListViewState extends State {
  ScrollController _scrollController = ScrollController();
  bool _atEdge = false;
  List<String> goodsList = [];
  @override
  void initState() {
    super.initState();
    for (int i = 0; i < 40; i++) {
      goodsList.add('${i}');
    }
  }
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
        itemCount: goodsList.length,
        itemBuilder: (context, index) {
          String model = goodsList[index];
          return FrameSeparateWidget(
              index: index,
              placeHolder: Container(
                height: 40,
                color: Colors.greenAccent,
                padding: EdgeInsets.only(left: 16, top: 16),
              ),
              child: Container(
                  height: 40,
                  color: Colors.greenAccent,
                  padding: EdgeInsets.only(left: 16, top: 16),
                  child: Text('子ListView 条目$model')));
        });
  }
}
复制代码效果对比

优化前

优化后

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    


















![[02/27][官改] Simplicity@MIX2 ROM更新-一一网](https://www.proyy.com/wp-content/uploads/2020/02/3168457341.jpg)



![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
