网站后台shopadmin输在哪里网页设计教程免费网站
Flutter Widget 执行顺序详解
单个 Widget 的执行顺序
在 Flutter 中,单个 Widget 的生命周期执行顺序如下:
1. 创建阶段 (Creation)
-  
构造函数:Widget 首先通过构造函数被创建
 -  
createState():对于 StatefulWidget,会调用 createState() 方法创建对应的 State 对象
 
2. 初始化阶段 (Initialization)
-  
initState():StatefulWidget 的 State 对象被插入到树中时调用(只调用一次)
 -  
didChangeDependencies():在 initState() 之后立即调用,或当依赖的 InheritedWidget 发生变化时调用
 
3. 构建阶段 (Building)
-  
build():构建 Widget 的 UI 表示,这个方法会被频繁调用
 
4. 更新阶段 (Update)
-  
didUpdateWidget():当父 Widget 重建并需要更新当前 Widget 时调用
 -  
setState():触发 Widget 重新构建
 
5. 销毁阶段 (Disposal)
-  
deactivate():当 State 从树中移除时调用
 -  
dispose():当 State 对象被永久移除时调用(释放资源)
 
完整执行顺序流程图
text
构造函数 → createState() (仅Stateful) → initState() → didChangeDependencies() → build()↑ ↓←────── didUpdateWidget() ←───────↓ deactivate() → dispose()
不同类型 Widget 的执行差异
StatelessWidget
-  
构造函数
 -  
build()
 
StatefulWidget
-  
构造函数
 -  
createState()
 -  
State 类的构造函数
 -  
initState()
 -  
didChangeDependencies()
 -  
build()
 -  
(更新时) didUpdateWidget()
 -  
(销毁时) deactivate()
 -  
dispose()
 
重要说明
-  
build() 方法:可能被频繁调用,应保持轻量级
 -  
initState():适合执行一次性初始化操作
 -  
dispose():必须释放所有控制器、订阅等资源
 -  
热重载:会重新创建 Widget 但保留 State,触发 build() 但不触发 initState()
 
理解这些执行顺序对于正确管理 Widget 生命周期和状态至关重要。
