flutter - didChangeDependencies 和 initState 有什么区别?

标签 flutter dart

我是 flutter 新手,当我想在 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) 这样的东西,所以我们可以从哪里调用 context 到用它) ?

最佳答案

Context of a state is available to us from the moment the State loads its dependencies.



在调用 build 时,上下文对我们可用并作为参数传递。

现在继续前进,
initstate 在状态加载其依赖项之前被调用,因此没有可用的上下文,如果您在 initstate 中使用上下文,则会出现错误。
但是 didChangeDependencies 在状态加载其依赖项后不久被调用,此时上下文可用,因此您可以在此处使用上下文。

However both of them are called before build is called. Only difference is that one is called before the state loads its dependencies and other is called a few moments after the state loads its dependencies.

关于flutter - didChangeDependencies 和 initState 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58371874/

相关文章:

Flutter - setState 未更新内部自定义状态小部件

dart - AngularDart的角度组件的应用布局

syntax - Flutter 的小部件构造函数中的这种类似 JSON 的语法是什么?

flutter - Google 云端硬盘范围(drive 或drive.file)用于读取用户上传的文件

dart - Flutter 中具有 Snap 效果的水平滚动卡片

firebase - 接收FCM通知点击事件

json - 未处理的异常 : Cyclic error in JSON stringify in Dart

user-interface - flutter ,按下按钮后如何复制文本?

android - 如何在 Lib flutter proy 中添加新目录?

dart - 测试角度分量