在文档中是书面的,但我听不懂。
当此对象插入树中时调用。 框架将为它创建的每个State对象精确地调用一次此方法。 重写此方法以执行初始化,具体取决于将此对象插入树中的位置(即上下文)或用于配置此对象的小部件(即小部件)。 如果State的构建方法依赖于本身可以更改状态的对象(例如ChangeNotifier或Stream),或者某个其他可以订阅以接收通知的对象,则State应该在initState期间订阅该对象,并从旧的状态中取消订阅对象,并在didUpdateWidget中更改时订阅新对象,然后在处置中取消订阅该对象。 您不能通过此方法使用BuildContext.inheritFromWidgetOfExactType。但是,didChangeDependencies将在此方法之后立即调用,并且可以在此处使用BuildContext.inheritFromWidgetOfExactType。 如果重写此方法,请确保您的方法始于对super.initState()的调用。
当此对象插入树中时调用。
框架将为它创建的每个State对象精确地调用一次此方法。
重写此方法以执行初始化,具体取决于将此对象插入树中的位置(即上下文)或用于配置此对象的小部件(即小部件)。
如果State的构建方法依赖于本身可以更改状态的对象(例如ChangeNotifier或Stream),或者某个其他可以订阅以接收通知的对象,则State应该在initState期间订阅该对象,并从旧的状态中取消订阅对象,并在didUpdateWidget中更改时订阅新对象,然后在处置中取消订阅该对象。
您不能通过此方法使用BuildContext.inheritFromWidgetOfExactType。但是,didChangeDependencies将在此方法之后立即调用,并且可以在此处使用BuildContext.inheritFromWidgetOfExactType。
如果重写此方法,请确保您的方法始于对super.initState()的调用。
但是我不确定它的含义。你能解释一下吗?
归功于@Remi,initState()是有状态窗口小部件插入到窗口小部件树中时被调用一次的方法。
initState()
如果需要进行某种初始化工作(例如注册侦听器),则通常会覆盖此方法,因为与build()调用此方法不同。
build()
并且要注销您的侦听器(或进行一些后期工作),请重写dispose()method。
dispose()
从这里
State的子类可以重写initState来完成只需要发生一次的工作。例如,重写initState可配置动画或订阅平台服务。需要通过调用super.initState来启动initState的实现。 当不再需要状态对象时,框架会在状态对象上调用dispose()。覆盖处理功能以执行清理工作。例如,覆盖处置可取消计时器或取消订阅平台服务。Dispose的实现通常以调用super.dispose结尾
State的子类可以重写initState来完成只需要发生一次的工作。例如,重写initState可配置动画或订阅平台服务。需要通过调用super.initState来启动initState的实现。
当不再需要状态对象时,框架会在状态对象上调用dispose()。覆盖处理功能以执行清理工作。例如,覆盖处置可取消计时器或取消订阅平台服务。Dispose的实现通常以调用super.dispose结尾