super.didChangeDependencies();
在下面的代码中做什么?
void didChangeDependencies() {
if (_isInit) {
setState(() {
_isLoading = true;
});
Provider.of<Contests>(context).fetchAndSetContests().then((_) {
setState(() {
_isLoading = false;
});
});
}
_isInit = false;
super.didChangeDependencies();
}
我知道它应该调用State
类的constructor
,但我找不到构造函数的定义,不明白调用它的目的是什么?
1条答案
按热度按时间gojuced71#
来自didChangeDependencies的Flutter文档:
在此State对象的依赖项更改时调用。
例如,如果先前的构建调用引用了后来更改的InheritedWidget,则框架将调用此方法以通知此对象有关更改的信息。
此方法也会在initState之后立即调用。从此方法调用BuildContext.dependOnInheritedWidgetOfExactType是安全的。
子类很少重写此方法,因为框架总是在依赖项更改后调用build。某些子类确实重写此方法,因为它们在依赖项更改时需要执行一些开销很大的工作(例如,网络获取),而这些工作对于每次生成来说都太大了。