在Flutter中,Widget主要被划分为StatelessWidget和StatefulWidget,即无状态组件和有状态组件。
StatelessWidget的生命周期就只有两个过程:初始化、通过build()方法进行渲染。
StatefulWidget是有状态组件,可以实现一些动态界面。当创建StatefulWidget时,也会创建一个State对象。通过State对象,可以更新数据,刷新界面。跟Android的Activity一样,State也有其生命周期方法,如下:
(1)initState:是State生命周期中创建运行的第一个方法,且在生命周期里面只会运行一次。可以将一些初始化的逻辑放到initState中,必须在该方法中加上super.initState()。
(2)didChangeDependencies:在State对象的依赖发送变化的时候被调用,
(3)build:用于构建Widget树,在didChangeDependencies()和didUpdateWidget()之后调用。基本上每次调用setState()方法都会运行build()方法。
(4)reassemble:专门用于开发调试用的,在热重载时会被调用。在Release模式下不会被调用。
(5)deactivate:在dispose()方法之前调用。组件可见状态发生变化时会调用deactivate()方法。
(6)dispose:当State对象从树中被永久移除时会调用dispose()方法,在此方法中可以做移除监听等操作。