我是新手,要在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就被调用,此时上下文可以使用,因此您可以在这里使用上下文。
关于flutter - didChangeDependencies和initState有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58371874/