StatelessWidget 只有 createElement 和 build 两个生命周期
所以重点了解下 StatefulWidget
StatefulWidget 的生命周期方法按照时期不同可分为三组:
初始化时期
createState
当构建一个新的
StatefulWidget会立刻调用并且这个方法必须被覆盖
1 | e.g. |
initState
创建
widget时调用的除构造方法外的第一方法类似于
Android的:onCreate()和IOS的viewDidLoad()这个方法中通常会做一些初始化工作 比如
channel的初始化 监听器的初始化等
1 | e.g. |
更新时期
didChangeDependencies
当依赖的
State对象改变时会调用:在第一次构建
widget时,在initState()之后立即调用此方法如果
StatefulWidget依赖于InheritedWidget,那么当前的State所依赖InheritedWidget中的变量改变的时候会再次调用
1 | e.g. |
bulid
这是一个必须实现的方法 在这里实现你要呈现的页面内容
它会在
didChangeDependencies()之后立即调用另外当调用
setState后也会再次调用
1 | e.g. |
didUpdateWidget
是个不常用的组件 当父组件需要重新绘制时才会调用
该方法会携带一个
oldWidget参数 可以将其与当前的Widget进行对比 以便执行一些额外的逻辑例如:
if ( oldWidget.xxx != widget.xxx )
1 | e.g. |
销毁时期
deactivate
- 很少使用 在组件被移除时调用 在
dispose()之前调用
1 | e.g. |
dispose
常用 组件被销毁时调用:
通常在该方法中执行一些资源的释放工作
比如 监听器的卸载
channel的销毁等
1 | e.g. |