Flutter Widget生命周期

讲到生命周期,Android主要是Activity的生命周期,对Flutter来说,万物皆是widget,生命周期是解决一些问题的基础。

StatefulWidget常见的场景,StatelessWidget生命周期只有一个build。

1.新打开widget A

A createState ---> A initState --->A didChangeDependencies --->A build

2.widget A切换 widget B

B createState ---> B initState --->B didChangeDependencies --->B build ---> A deactivate ---> A build

3. widget B退出 返回widget A

A deactivate ---> A build---> B deactivate ---> B dispose

4.widget A hot reload 热重载

A didUpdateWidget ---> A build

5.widget A setState

A build


简单介绍下

createState 创建组件状态 只调用一次

initState 初始化组件状态 只调用一次

didChangeDependencies 改变组件依赖关系 initState 时会调用,除此之外,如同其名,在改变依赖关系时,才会再次调用。当StatefulWidget依赖的InheritedWidget发生变化时,didChangeDependencies 才会调用。didChangeDependencies方法调用不仅一次。

(备注:InheritedWidget 组件间传递数据)

build 创建组件 多次调用,如果栈内有多个widget,当再次跳转界面时,栈内未销毁的widget全部都会执行一遍deactivate ---> build。

didUpdateWidget 更新组件,热更新hot reload必会调用,按道理使用setState方法,子widget会调用该方法。多次调用。

deactivate 解除 组件被移除时调用,多次调用。

dispose 销毁 组件被销毁时调用,只调用一次。


分享到:


相關文章: