initState和dispose
initState
initState一般用于这个Widget
初始化的时候执行的操作,格式如下:
@override
void initState(){
// 注意添加这一行,一般放在第一行
super.initState();
// 执行其它操作
}
dispose
dispose一般用于这个Widget
被销毁的时候执行的操作,格式如下:
@override
void dispose() {
// 执行其它操作
// 注意添加这一行,一般放在最后一行
super.dispose();
}
触发条件
一般来说每一次创建Widget
的时候都会触发一次initState
,每一次销毁Widget
都会触发一次dispose
比如这样的判定:
return Container(
child: val==true ? childWidget1() : childWidget2()
)
当val
初始值为true
的时候,会触发一次childWidget1
的initState()
当val
值为true
变为false
的时候,会触发一次childWidget1
的dispose()
和childWidget2
的initState()
注意事项
如果在initState()
中创建了监听器,比如ever
或者.listener
,那么务必在dispose()
方法中将其销毁,否则会出现重复监听的情况