当前位置: 首页 > news >正文

Flutter---生命周期

Flutter 中 Widget 的生命周期分为两大类:StatefulWidget 和 StatelessWidget

1. StatelessWidget 生命周期

class MyStatelessWidget extends StatelessWidget {@overrideWidget build(BuildContext context) {return Container();}
}

2. StatefulWidget 完整生命周期

生命周期方法执行顺序

创建阶段 → 更新阶段 → 销毁阶段

创建阶段

class MyStatefulWidget extends StatefulWidget {@override_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}class _MyStatefulWidgetState extends State<MyStatefulWidget> {// 1. 构造函数_MyStatefulWidgetState() {print('1. 构造函数调用');}// 2. initState - 最重要的初始化方法@overridevoid initState() {super.initState();print('2. initState调用');}// 3. didChangeDependencies - 依赖变化时调用@overridevoid didChangeDependencies() {super.didChangeDependencies();print('3. didChangeDependencies调用');// 用途:处理InheritedWidget依赖变化// 在initState之后立即调用,也可能在依赖变化时调用}// 4. build - 构建UI@overrideWidget build(BuildContext context) {print('4. build调用');return Container();}// 5. didUpdateWidget - Widget配置更新时调用@overridevoid didUpdateWidget(covariant MyStatefulWidget oldWidget) {super.didUpdateWidget(oldWidget);print('5. didUpdateWidget调用');}
}

更新阶段

触发更新的方式

// 方式1: setState
setState(() {_counter++;
});// 方式2: 父组件重建传入新props
ParentWidget → MyStatefulWidget(newProps)// 方式3: InheritedWidget数据变化

更新时的调用顺序

didUpdateWidget() → build()

销毁阶段

// 6. deactivate - 从树中移除时调用@overridevoid deactivate() {print('6. deactivate调用');super.deactivate();// 用途:临时移除时的清理工作}// 7. dispose - 永久销毁时调用@overridevoid dispose() {print('7. dispose调用');// 用途:释放资源、取消订阅、停止动画super.dispose();}
}

完整的生命周期流程图

创建阶段:
构造函数 → initState() → didChangeDependencies() → build()更新阶段:
setState() 或 props变化 → didUpdateWidget() → build()销毁阶段:
deactivate() → dispose()

http://www.dtcms.com/a/499537.html

相关文章:

  • 百度网址大全网站互联网家装
  • 专业的东莞网站排名WordPress多站点开启多语言
  • 微信端网站开发流程做网站什么配置够用
  • c# 泛型的详细介绍
  • OceanBase的SQL和执行计划监控视图
  • 网站原创内容优化wordpress 网站内跳转
  • 龙口市规划建设局网站南京app开发公司排名
  • 解决 Hugging Face 国内下载慢的问题:用 ModelScope 替代加速模型获取
  • 从基础到深入:自然语言处理核心技术全梳理(有 ML/DL 基础)
  • 合肥建设公司网站wordpress 个人电脑
  • 做网站需要哪些方面的支出新媒体运营需要学什么
  • 云手机群控是什么意思
  • 【ecfw】ecfw构建基础
  • 常州二建建设有限公司官方网站聊城做wap网站哪儿好
  • php做网站需要html国外设计公司名字
  • CUDA nvjpeg库编码jpeg图像
  • AI 工作流实战 - 调用豆包api实现批量生图
  • 如何编写您的第一个 Linux 设备驱动程序(一)
  • 做更好的自己 网站客户又找不到你
  • Spring MVC 封装全局统一异常处理
  • 海尔建设网站的内容wordpress设置教程
  • Flutter---EQ均衡器
  • 响应式食品企业网站网站的外链是什么
  • 【Protobuf】proto3语法详解1
  • 网站备案要做家居网站设计
  • VS2022+DirectX9之创建DirectX9设备
  • unordered_map和unordered_set的封装与简单测试
  • (Kotlin协程十六)try/catch 可以捕获子协程的异常吗?为什么?
  • 网站移动端怎么做的做外国网站怎么买空间
  • 图像的脉冲噪声和中值滤波