生命周期层级
页面生命周期widget
- 图解流程
-
细分流程
-
构造函数
-
createState
创建state对象
-
initState⭐
时机:插入widget树时调用
常见用途:初始化数据/初始化controller/发起请求
-
didChangeDependencies⭐
时机:initState后立即调用一次
常见用途:Provider/Theme/MediaQuery
-
build⭐
时机:初始化/setState/didUpdateWidget后都会执行
常见用途:ref.watch
-
didUpdateWidget⭐
时机:父组件传入新的参数时
常见用途:重新赋值后执行某些方法并更新build
-
setState⭐
时机:setState((){})
常见用途:标记dirty->更新某个数据并重新执行build
-
deactivate
从树上移除,但可能还会重新插入,固化存在内存中
-
dispose⭐
时机:永久销毁
必做:释放资源/关闭流/销毁controller
-
标记:build方法的参数BuilderContext即为三棵树中的Element的向外暴露的上下文,而当执行
Navigator.push(context,route)或context.size时,就是利用Element对应的方法去进行检索router/获取