天天看点

记一次flutter列表卡顿的优化

在做滑动列表时通过profile发现GPU和FPS一直爆红。打包出来的应用滑动也很卡。

原因:频繁调用setState造成的。自己的粗心大意导致的。列表需要根据滑动的高度显示一个返回顶部的按钮。所以用了controller的监听,但是没有具体去判断条件,如下

void _scrollControllerListener(){
    setState(() {
      if (scrollController.position.extentBefore > 600) {
        showGoTop = true;
      } else {
        showGoTop = false;
      }
    });
  }           

复制

改进:

void _scrollControllerListener(){
    if (scrollController.position.extentBefore > 600 && showGoTop != true) {
      setState(() {
        showGoTop = true;
      });
    } else if (scrollController.position.extentBefore < 600 && showGoTop != false) {
      setState(() {
        showGoTop = false;
      });
    }
  }           

复制