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

Flutter:Widget生命周期

StatelessWidget:无状态部件的生命周期

import 'package:flutter/material.dart';void main() {runApp(App());
}class App extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: MyHomePage(title: 'MyHome'),);}
}class MyHomePage extends StatelessWidget {final String? title;MyHomePage({this.title}) {print('MyHomePage:构造函数被调用了');}@overrideWidget build(BuildContext context) {print('build:被调用了');return Center(child: Text(title!),);}
}
// 执行顺序:MyHomePage:构造函数被调用了 -> build:被调用了

StatefulWidget:有状态部件的生命周期

import 'package:flutter/material.dart';void main() {runApp(App());
}class App extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: MyHomePage(title: 'MyHome'),);}
}class MyHomePage extends StatefulWidget {final String? title;MyHomePage({this.title}) {print('Widget:构造函数被调用');}@overrideState<MyHomePage> createState(){print('createState:被调用');return _MyHomePageState();}
}class _MyHomePageState extends State<MyHomePage> {// 这个方法一般忽略不写_MyHomePageState(){print('State 的 _MyHomePageState:构造函数被调用');}@overridevoid initState() {print('State 的 initState:被调用');super.initState();}@overridevoid didChangeDependencies() {print('didChangeDependencies:被调用(改变依赖关系)');super.didChangeDependencies();}@overrideWidget build(BuildContext context) {print('build:被调用');return Center(child: Text(widget.title!),);}@overridevoid dispose() {print('State 的 dispose:销毁被调用');super.dispose();}
}// 执行顺序:
Widget:构造函数被调用
createState:被调用
State 的 _MyHomePageState:构造函数被调用
State 的 initState:被调用
didChangeDependencies:被调用(改变依赖关系) // 下一篇文章会配合:InheritedWidget数据共享,一起使用
build:被调用当离开页面
当Widget销毁时:State 的 dispose:被调用// 如果在有状态的组件中 更新数据,需要调用:setState会重新调用build进行渲染
setState(() {});
http://www.lryc.cn/news/485567.html

相关文章:

  • Flutter:Dio下载文件到本地
  • [⑧5G NR]: PBCH payload生成
  • 查看解决端口占用,以及docker解决端口占用的原理
  • 力扣-Hot100-链表其一【算法学习day.34】
  • centos7 升级openssl 与升级openssh 安装卸载 telnet-server
  • C++知识点总结(57):STL综合
  • mac2019环境 Airflow+hive+spark+hadoop本地环境安装
  • 如何使用EasyExcel生成多列表组合填充的复杂Excel示例
  • 【MySQL】MySQL在Centos环境安装
  • JDBC-Mysql 时区问题详解
  • 前端页面一些小点
  • Postman接口测试(断言、关联、参数化、输出测试报告)
  • redis和mongodb等对比分析
  • 如何在 WordPress 中轻松强制所有用户退出登录
  • 移除元素(leetcode 27)
  • html5表单属性的用法
  • 使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan
  • 相机光学(四十四)——ALL-PD和PDAF
  • Opengl光照测试
  • OpenSIP2.4.11 向 FreeSWITCH 注册
  • 【C++】深入理解 C++ 优先级队列、容器适配器与 deque:实现与应用解析
  • Android 开发与救砖工具介绍
  • vue2和vue3:diff算法的区别?
  • 后端返回大数问题
  • vue3: ref, reactive, readonly, shallowReactive
  • 5G与4G互通的桥梁:N26接口
  • 29-Elasticsearch 集群监控
  • 利用Excel批量生成含二维码的设备管理标签卡片
  • 小米运动健康与华为运动健康在苹手机ios系统中无法识别蓝牙状态 (如何在ios系统中开启 蓝牙 相册 定位 通知 相机等功能权限,保你有用)
  • 高亮变色显示文本中的关键字