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