「这是我参与11月更文应战的第25天,活动概况检查:2021最后一次更文应战」。
在iOS开发中,咱们都知道控制器的生命周期
,从出现到消失。在flutter
中咱们的widget
的生命周期是怎么样的,一起学习下。
1. Widget生命周期的基本概念
- 生命周期
生命周期是从
创立到毁掉
的进程,实际使用中便是各种回调方法(函数调用)。 意图便是为了让咱们知道封装好的Widget处于什么样的状况
。 - 效果
咱们通过监听
Widget的生命周期
,做出对应的操作,比如initState
初始化数据:创立数据或许发送网络请求。dispose
的时分内存管理,毁掉数据,监听者或许Timer等。
2. Widget的生命周期
2.1 StatelessWidget
对于StatelessWidget
来说没有状况,因而只有
- 初始化
init
-
build创立
(每次页面制作会调用build)
2.2 StatefulWidget
init初始化
createState
createState
是创立Widget的state
的时分创立的,这个方法只调用一次
state的init
咱们创立State
的时分会履行初始化方法,只会履行一次
initState()
initState
在创立state
的时分调用,只会履行一次
,通常咱们会在这里做些数据方面的处理或许一些初始化操作
,此时view还没有加载
,类似咱们的viewDidload
。
didChangeDependencies
didChangeDependencies
在initState
后当即调用,之后在StatefulWidget
依靠的InheritedWidget
发生变化后,didChangeDependencies
才会调用,因而didChangeDependencies
可以屡次被调用。后边咱们会介绍InheritedWidget
:数据同享
build
build是制作页面的时分调用
,初始化的时分在didChangeDependencies后调用
,咱们主动调用setState()
的时分会重新调用build
方法进行制作页面渲染,通常咱们在build
主要是创立widget
,调用其他方法会影响渲染效率
。
-
addPostFrameCallback
addPostFrameCallback
是在渲染完毕
都进行调用,一般是在initState
中调用,只会调用一次。
-
didUpdateWidget
组件更新
的时分会进行调用,通常widget初始化
后会调用一次
-
deactivate
移除组件
的时分调用