Fork me on GitHub

Flutter中State的生命周期

State 的生命周期

StatefulWidget中的State的生命周期如下:

State Tree

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()。

参考

Flutter:界面刷新和生命周期

-------------完结撒花 -------------