didChangeDependencies和initState之间的区别是什么?
我是不熟悉的人,当我想在InitState中调用上下文时,会抛出一个错误:即将发生,
BuildContext.inheritFromWidgetOfExactType
但随后我使用didChangeDependencies即可正常工作。
现在我有两个问题:
1-为什么我们不能在initState中调用上下文,但是didChangeDependencies没有问题?(因为我在官方文档中读过This method
is also called immediately after [initState],并且在build方法之前都将调用它们。)
2-为什么我们可以在build方法之外访问上下文(因为这里有build(BuildContext
context),我们可以使用我们的上下文,但是在didChangeDependencies中我们没有类似的东西didChangeDependencies(BuildContext
context),因此我们可以从哪里调用上下文来使用它)?
回答:
从状态加载其依赖项的那一刻起,我们就可以使用状态的上下文。
在调用build时,上下文可供我们使用,并作为参数传递。
现在继续前进,在状态加载其依赖项之前会调用initstate,因此,如果没有上下文可用,并且如果您在initstate中使用上下文,则会收到错误消息。但是,在状态加载其依赖关系后不久,didChangeDependencies就被调用,此时上下文可以使用,因此您可以在这里使用上下文。
但是,在调用build之前先调用它们。唯一的区别是,一个在状态加载其依赖项之前被调用,而另一个在状态加载其依赖项之后被调用。
以上是 didChangeDependencies和initState之间的区别是什么? 的全部内容, 来源链接: utcz.com/qa/406485.html