在 flutter
中,如果包含的 小组件
过多 ,使用 setState
会把 Scaffold
下的所有组件都执行更新,可以对部分组件执行 局部更新
,来提升性能;当然,flutter
会对未变动的组件进行优化处理。
1.ValueListenableBuilder
首先,如计数器项目,它是通过更改 count
来实现变化的。
final ValueNotifier<int> count = ValueNotifier<int>(0)
使用官方的 ValueListenableBuilder
组件进行包裹 你需要更新状态的组件。它有两个参数,一个是监听的值,一个是渲染的组件,当这个值发生改变,就可以重新触发渲染组件的函数。
ValueListenableBuilder(
valueListenable: count,
builder: (context, value, widget) {
return XXX();
},
)
2.改变数据
使用 count.value
进行累加,不使用 setState
来更新,当 count.value
发生改变时,就会重新渲染包裹住的组件
void _incrementCounter() {
count.value++;
}