initState和dispose

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的时候,会触发一次childWidget1initState()
val值为true变为false的时候,会触发一次childWidget1dispose()childWidget2initState()

注意事项

如果在initState()中创建了监听器,比如ever或者.listener那么务必在dispose()方法中将其销毁,否则会出现重复监听的情况