我仍然对这两者之间的区别感到困惑
isBusy = false;
setState(() {
});
和
setState(() {
isBusy = true;
});
两者有什么区别?我已经读过api,但不幸的是我仍然不清楚它有什么不同。我知道setState调用widget的构建方法.api陈述
每当您更改State对象的内部状态时,请创建 更改传递给setState的函数:setState((){_ myState = newValue});提供的回调会立即同步调用。
这究竟是什么意思?任何人都可以给我一个超级简单的例子,这会产生影响吗?
答案 0 :(得分:3)
使用setState
回调之间没有区别,实际上没有。
重点是什么?
这是为了防止处理异步数据时出错。
通过使用回调,您无法做到错误:
function() async {
setState(() {});
myState = await future;
}
这会导致问题,因为如果您的未来未同步完成,则会以无效状态调用build
方法。
通过使用回调,您将被迫执行以下操作:
function() async {
final value = await future;
setState(() {
myState = value;
});
}
这一次,它不会导致问题,因为在 setState之前等待。
我不能进行异步回调,stil有问题吗?
没有。
因为setState
方法会在内部检查回调不会返回未来。如果确实如此,它将抛出