中国建设银行大沥网站杭州下城网站建设
在 Flutter 中,StatefulWidget 和 StatelessWidget 这两种 Widget 的生命周期不同,主要关注的是 StatefulWidget,因为它涉及到状态的管理和更新。
StatefulWidget 的生命周期:
 
1. 创建阶段 (Create)
createState():- 当你创建一个 
StatefulWidget时,createState()方法会被调用,并返回一个与该StatefulWidget关联的State对象。这个方法只会被调用一次。 
- 当你创建一个 
 
2. 初始化阶段 (Initialize)
initState():- 这个方法在 Widget 创建并且 
State对象被插入到 Widget 树时调用。它通常用于执行一些初始化操作,比如网络请求、订阅流、设置初始值等。initState()只会被调用一次。 
- 这个方法在 Widget 创建并且 
 
3. 构建阶段 (Build)
build(BuildContext context):- 每次 
State对象的状态发生变化时,Flutter 会调用build()方法来重新构建 Widget 树。这个方法会在State对象的生命周期中多次调用,通常在setState()被调用时,或者当父 Widget 发生变化时。 
- 每次 
 
4. 依赖变化 (Dependencies Changed)
didChangeDependencies():- 当 
State对象的依赖发生变化时(例如,InheritedWidget的数据发生变化),Flutter 会调用此方法。它会在initState()之后、build()方法之前调用,并且会在build()每次重新构建时调用。 
- 当 
 
5. 更新阶段 (Update)
setState():setState()是更新State对象的状态并触发build()方法重新执行的方式。当调用setState()时,Flutter 会重新渲染 Widget。
6. 销毁阶段 (Dispose)
dispose():- 当 
State对象不再需要时,dispose()会被调用。在这个方法中,我们可以释放资源,如取消订阅流、停止动画、清理控制器等。这个方法只会被调用一次。 
- 当 
 
StatefulWidget 生命周期的总结图:
 
1. createState() -> 2. initState() -> 3. build() -> 4. didChangeDependencies() (如果依赖变化)|setState() 触发 build()|5. dispose()
 
StatelessWidget 的生命周期
 
StatelessWidget 没有 State,因此没有复杂的生命周期管理。它的生命周期主要是:
- 构建阶段:当它第一次被插入到树中时,
build()会被调用。 - 更新阶段:每次父 Widget 发生变化时,
build()方法也会被调用。 
StatelessWidget 生命周期相对简单,因为它不涉及状态的改变。
