我有一个Stateful小部件,只有一个变量count
.
每次我按下一个按钮,计数就会递增并显示在屏幕上.
我知道我必须调用setState()
才能用新值更新UI.
通常情况下,该操作如下所示:
ElevatedButton(
onPressed: () {
setState(() {
count++;
});
}
我的问题是,为什么要在setState()
内部递增变量count
?
即使我在外面做,它也能很好地工作:
ElevatedButton(
onPressed: () {
count++;
setState(() {});
}
那么,为什么不用一个更简单的方法,比如updateUI()
,而不是setState()
呢?Ffltter在内部仍然可以随时调用setState()
,但对外部世界来说,它可以公开一个更优雅的API:
ElevatedButton(
onPressed: (){
count++;
updateUI();
}
当屏幕需要重新绘制时,可以从任何地方调用updateUI()
.setState()
更令人费解,因为它以函数作为参数.目前还不清楚该函数内部应该做些什么.
setState()
内允许/不允许什么类型的操作?我想知道这里面有什么设计思想.
就这一点而言,Stateless小部件也可以有内部变量.那么为什么它不能有一个updateUI()
的方法呢?这仅仅是出于效率的原因吗?