Flutter中的“State”类构造函数是什么样子的?

ccrfmcuu  于 2023-01-27  发布在  Flutter
关注(0)|答案(1)|浏览(158)

super.didChangeDependencies();在下面的代码中做什么?

void didChangeDependencies() {
    if (_isInit) {
      setState(() {
        _isLoading = true;
      });
      Provider.of<Contests>(context).fetchAndSetContests().then((_) {
        setState(() {
          _isLoading = false;
        });
      });
    }
    _isInit = false;
    super.didChangeDependencies();
  }

我知道它应该调用State类的constructor,但我找不到构造函数的定义,不明白调用它的目的是什么?

gojuced7

gojuced71#

来自didChangeDependencies的Flutter文档:
在此State对象的依赖项更改时调用。
例如,如果先前的构建调用引用了后来更改的InheritedWidget,则框架将调用此方法以通知此对象有关更改的信息。
此方法也会在initState之后立即调用。从此方法调用BuildContext.dependOnInheritedWidgetOfExactType是安全的。
子类很少重写此方法,因为框架总是在依赖项更改后调用build。某些子类确实重写此方法,因为它们在依赖项更改时需要执行一些开销很大的工作(例如,网络获取),而这些工作对于每次生成来说都太大了。

相关问题