StatefulBuilder 局部刷新 解决方案

2,212 阅读1分钟

题记:

大的黄叶子朝下掉
慢慢的,它经过风
经过淡青的天
经过天的刀光
黄灰楼房的尘梦
下来到半路

--执剑走天涯,从点滴开始, 精益求精

本文主要讲一个局部刷新的组件,非常实用,提高系统性能
StatefulBuilder提供了局部更新控件的方法,当StatefulWidget中控件树较大时,更新一个属性导致整个树重建,消耗性能,而使用StatefulBuilder能有效的提高性能

Eg:

body: Column(
  children: <Widget>[
   Text('$num'),
    Container(height: 100,
        child: StatefulBuilder(
          builder: (BuildContext context, StateSetter setState) {
            return GestureDetector(
              onTap: () {
            ///注意:这个方法不会整体触发build(BuildContext context) 
           /// 只会刷新StatefulBuilder里的widget 即只对StatefulBuilder里的组件起作用 
                setState(() {
                num ++
                });
              },
              child: Text('点击 setState()'),
            );
          },
        ),
    )
  ],
),

总结:

  • StatefulBuilder 组件里的调用setState,不会影响整体build(BuildContext context) 方法, 只对StatefulBuilder 里面的树形结构起效果,达到局部更新的效果