Flutter:学习 StatelessWidget 和 StatefulWidget
2024-10-21 03:05:50
Widget 分为了两种类型,分别为 StatelessWidget 和 StatefulWidget。
顾名思义,StatelessWidget 就是无状态的组件,它只是作为一个不发生任何更新状态的组件。比如,每秒刷新时间的组件,必须用 StatefulWidget。在一个 UI 中,有一些部分的组件是不会发生数据变化的,与之相反的就是有数据变化的组件。因此,Widget 分成有状态和无状态的 Widget。
下面是一个有状态组件的代码:
class BootPage extends StatefulWidget {
const BootPage({Key? key}) : super(key: key);
@override
State<BootPage> createState() => _BootPageState();
}
class _BootPageState extends State<BootPage> {
@override
Widget build(BuildContext context) {
return Text('Hello World!');
}
}
BootPage 类继承 StatefulWidget 抽象类,有状态的组件必须维护 State 抽象类,这就是有状态的组件。State 中定义了一个组件在发生数据变化时的各种生命周期函数。比如,didUpdateWidget()
函数是每当组件数据更改时调用。
StatelessWidget 被实例化之后立马调用 Widget build(BuildContext context)
,而 StatefulWidget 是先调用 State createState()
,然后再调用 build 函数。因为 ,StatefulWidget 除了构建界面以为还要维护界面上的各种数据变化,而数据变化主要由 State 来负责。
最新文章
- 安装ganglia
- java:关于文件下载
- intelj对我来说比较常用的快捷键
- mysql 导出慢
- Android动画效果生动有趣的通知NiftyNotification(Android Toast替代品)
- GLSL 中的光照计算
- [原]poj-2488-water-DFS
- Servlet 小试牛刀(doGet,doPost)
- UVA 140 (13.07.29)
- 理解angularJs中的$on,$broadcast,$emit
- C#语法——await与async的正确打开方式
- MySQL数据连表查询思路
- buildroot管理uboot+kernel+rootfs
- vi/vim 文字处理器常用命令
- 当Elasticsearch遇见Kafka
- Android 百度sdk5.0定位
- .NET MVC中的防CSRF攻击
- netty 之 传统的阻塞io 体系回顾
- dede 栏目及子栏目
- 解决ThinkPHP的Create方法失效而没有提示错误信息的问题