使用 setState 时流分析不起作用

Flow analysis doesn't work when using setState

void f() {
  String string;
  setState(() {
    string = fooCondition ? 'foo' : 'bar';
  });
  
  string.toUpperCase(); // Error
}

如果我删除 setState 条件,流分析工作!我可以将 setState 放在下面(空白 setState(() {}),但这只会降低代码的可读性。如果不使 string 可为空并随后检查是否为空,是否有更好的方法来做到这一点?

这就是为什么您也可以在本地范围内使用 late 关键字。

late String string;

回答你的问题:

void f() {
  late String string;
  setState(() {
    string = fooCondition ? 'foo' : 'bar';
  });

  string.toUpperCase(); // Works
}