第一次看文章的朋友可以关注我,会不定期发布大厂面试题、Android架构技术知识点及解析等内容,还有Android学习pdf+源码笔记+面试文档+进阶视频分享更多还可以看我的GitHub链接:https://github.com/Meng9
最近一直在用Flutter做app,感觉就像用Vue或React写WEB页面一样,蛮好玩的。为了加深自己对Flutter的理解,记录一下自己的学习心得。
看源码就知道这三者的关系了,代码如下:
abstract class Widget extends DiagnosticableTree { const Widget({ this.key }); final Key key; @protected Element createElement(); static bool canUpdate(Widget oldWidget, Widget newWidget) { return oldWidget.runtimeType == newWidget.runtimeType && oldWidget.key == newWidget.key; } }abstract class StatelessWidget extends Widget { const StatelessWidget({ Key key }) : super(key: key); @override StatelessElement createElement() => StatelessElement(this); @protected Widget build(BuildContext context); }abstract class StatefulWidget extends Widget { const StatefulWidget({ Key key }) : super(key: key); @override createElement() => StatefulElement(this); @protected State createState();}
StatelessWidget没有状态,可以类比react中的傻瓜组件;
StatefulWidget有状态,状态存在State对象中;所以一般说的生命周期都是指的是State的生命周期;
abstract class State extends Diagnosticable { void initState() { } void didChangeDependencies() { } Widget build(BuildContext context); void setState(VoidCallback fn) {} void deactivate() { } void dispose() { } void reassemble() { } void didUpdateWidget(covariant T oldWidget) { }}
为了验证State的生命周期,我的操作是从Home->page1->page2->page1->Home
从Home->page1,这是初始化的过程
I/flutter ( 4980): [debug],[lifeCycle], initStateI/flutter ( 4980): [debug],[lifeCycle], didChangeDependenciesI/flutter ( 4980): [debug],[lifeCycle], build
从page1->page2,相当于page1被暂时移出
I/flutter ( 4980): [debug],[lifeCycle], deactivateI/flutter ( 4980): [debug],[lifeCycle], didChangeDependenciesI/flutter ( 4980): [debug],[lifeCycle], build
从page2->page1,相当于page1又被移回来了
I/flutter ( 4980): [debug],[lifeCycle], deactivateI/flutter ( 4980): [debug],[lifeCycle], didChangeDependenciesI/flutter ( 4980): [debug],[lifeCycle], build
从page1->Home,相当于page1被删除
I/flutter ( 4980): [debug],[lifeCycle], deactivateI/flutter ( 4980): [debug],[lifeCycle], dispose
直接看图,应该很清晰了,
--结束END--
本文标题: 用Flutter做APP学习心得:Flutter widget的生命周期
本文链接: https://www.lsjlt.com/news/240298.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0