State 的生命周期
StatefulWidget中的State的生命周期如下:
createState
创建一个State。
initState
当插入渲染树的时候调用,这个函数在生命周期中只调用一次,可以进行初始化操作。
didChangeDependencies
在 initState() 调用结束后,这个函数会被调用。
在didChangeDependencies中,可以跨组件拿到数据。
build
在这里构建视图。
didUpdateWidget
当组件的状态改变的时候就会调用didUpdateWidget。这个函数调用后,会调用 build()。
实际上这里flutter框架会创建一个新的Widget,绑定本State,并在这个函数中传递老的Widget。这个函数一般用于比较新、老Widget,看看哪些属性改变了,并对State做一些调整。
另外如果某些 Widget 上涉及到 controller 的变更,要么一定要在这个回调方法中移除旧的 controller 并创建新的 controller 监听。
setState
可以手动调用这个函数更新视图,调用这个之后会触发didUpdateWidget()。
deactivate
当 State 被暂时从视图树中移除时,会调用这个函数。
页面切换时,也会调用它,因为此时 State 在视图树中的位置发生了变化,需要先暂时移除后添加。
PS: 重写的时候必须要调用 super.deactivate()。
dispose
当State被销毁时调用,可以在这里移除监听释放资源。在调用这个函数之前,总会先调用 deactivate()。
PS: 重写的时候必须要调用 super.dispose()。


