Flutter 中的生命周期

在 Flutter 中,StatefulWidgetStatelessWidget 这两种 Widget 的生命周期不同,主要关注的是 StatefulWidget,因为它涉及到状态的管理和更新。

StatefulWidget 的生命周期:

1. 创建阶段 (Create)
  • createState()
    • 当你创建一个 StatefulWidget 时,createState() 方法会被调用,并返回一个与该 StatefulWidget 关联的 State 对象。这个方法只会被调用一次。
2. 初始化阶段 (Initialize)
  • initState()
    • 这个方法在 Widget 创建并且 State 对象被插入到 Widget 树时调用。它通常用于执行一些初始化操作,比如网络请求、订阅流、设置初始值等。initState() 只会被调用一次。
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,因此没有复杂的生命周期管理。它的生命周期主要是:

  1. 构建阶段 :当它第一次被插入到树中时,build() 会被调用。
  2. 更新阶段 :每次父 Widget 发生变化时,build() 方法也会被调用。

StatelessWidget 生命周期相对简单,因为它不涉及状态的改变。

相关推荐
阿拉斯攀登1 分钟前
第 3 篇 保姆级手把手!RK 安卓驱动开发环境搭建(Ubuntu20.04 + 官方 SDK),踩坑全规避
android·驱动开发·瑞芯微·rk安卓驱动
巫山老妖6 分钟前
多 Agent 协作实战:我用 3 只龙虾组了个「AI小分队」,效率直接翻倍
java·前端
DyLatte11 分钟前
理性到最后,其实是一场下注
前端·后端·程序员
橘哥哥11 分钟前
vue中读取静态配置文件中内容
前端·javascript·vue.js
废嘉在线抓狂.14 分钟前
简易拆开即用的高性能计时器(C#)
前端·unity·c#
yuguo.im18 分钟前
91 行代码实现一个打飞机游戏(HTML5 Canvas 版)
前端·游戏·html5·打飞机
新缸中之脑30 分钟前
使用 AI 进行科学调试
android·人工智能·kotlin
从文处安39 分钟前
「前端何去何从」一直写 Vue ,为何要在 AI 时代去学 React「2」?
前端·react.js
掘金者阿豪40 分钟前
深入解读OpenClaw配置文件:一个现代化AI网关的全景洞察
前端
葡萄城技术团队41 分钟前
Playwright 官方推荐的 Fixture 模式,为什么大厂架构师却在偷偷弃用?
前端