【发布时间】:2019-02-17 03:22:28
【问题描述】:
在文档中是这样写的,但我无法理解。
将此对象插入树时调用。
框架将为它创建的每个 State 对象仅调用一次此方法。
重写此方法以执行初始化,该初始化取决于此对象插入树的位置(即上下文)或用于配置此对象的小部件(即小部件)。
如果 State 的构建方法依赖于一个自身可以改变状态的对象,例如 ChangeNotifier 或 Stream,或者可以订阅接收通知的其他对象,那么 State 应该在 期间订阅该对象initState,在didUpdateWidget中退订旧对象并订阅新对象,然后在dispose中退订对象。
您不能从此方法中使用 BuildContext.inheritFromWidgetOfExactType。但是在这个方法之后会立即调用didChangeDependencies,并且可以在那里使用BuildContext.inheritFromWidgetOfExactType。
如果您覆盖它,请确保您的方法以调用
super.initState()开始。
但我不确定它的含义。能解释一下吗?
【问题讨论】:
-
在widget-tree中第一次插入有状态widget时调用的方法
-
super.initState()转发到您的小部件的State<T>基类的默认实现。如果不覆盖,则不会执行默认实现,但小部件依赖于它才能正常工作。 -
“如果你不覆盖,”应该是“如果你不转发,”