空集状态有什么意义?

Aya*_*isy 4 setstate flutter

我想知道在setState不为变量设置新值的情况下调用背后的要点。

  readLocal() async {
    prefs = await SharedPreferences.getInstance();
    id = prefs.getString('id') ?? '';
    if (id.hashCode <= peerId.hashCode) {
      groupChatId = '$id-$peerId';
    } else {
      groupChatId = '$peerId-$id';
    }

    setState(() {});
  }
Run Code Online (Sandbox Code Playgroud)

Din*_*ian 5

我会说这只是一个约定。以上可以改写为

readLocal() async {
  prefs = await SharedPreferences.getInstance();
  setState(() {
    id = prefs.getString('id') ?? '';
    if (id.hashCode <= peerId.hashCode) {
      groupChatId = '$id-$peerId';
    } else {
     groupChatId = '$peerId-$id';
   }
  });
}
Run Code Online (Sandbox Code Playgroud)

两者都会做同样的事情。setState(() {})在改变state variable外观整洁和可靠后调用。

根据 的实现部分setState,它将按顺序放在下面。

  1. 断言。如果任何断言失败,则抛出异常并在那里停止。
  2. 执行回调函数( final dynamic result = fn() as dynamic;)
  3. 请求框架重建( _element.markNeedsBuild();)