我想知道在不为变量设置新值的情况下调用$ ./build/tools/make_standalone_toolchain.py --arch x86_64 --api 21 -v --install-dir ../toolchains/oboe_record_proto/
Unsupported platform: CYGWIN_NT-10.0
的意义。
setState
答案 0 :(得分:2)
文档说[[https://docs.flutter.io/flutter/widgets/State/setState.html]:
调用setState会通知框架此对象的内部状态已更改,该方式可能会影响此子树中的用户界面,这会导致框架为该State对象安排构建。
空括号{ }
是空回调(因为您显然不需要一个):
所提供的回调立即被同步调用。 [...]
简而言之:
setState(() {});
是一种告诉框架重新构建状态对象的方法,而无需使用在构建后立即调用回调的可能性
答案 1 :(得分:1)
我想这只是一个惯例。上面可以改写为
readLocal() async {
prefs = await SharedPreferences.getInstance();
setState(() {
id = prefs.getString('id') ?? '';
if (id.hashCode <= peerId.hashCode) {
groupChatId = '$id-$peerId';
} else {
groupChatId = '$peerId-$id';
}
});
}
两者都会做同样的事情。使setState(() {})
发生突变后再调用state variable
看起来很简洁而且很容易实现。
根据setState
的{{3}}部分,它将按顺序排列在下面。
final dynamic result = fn() as dynamic;
)_element.markNeedsBuild();
)答案 2 :(得分:0)
除了其他答案外,还有一个区别。
在已卸载的(setState()
)小部件上调用mounted == false
时,它将失败。这意味着setState
回调中包含的所有内容都不会被调用,而如果您在setState
之外运行它,则会被执行。