Day 15状态管理

为什麽需要状态管理?
在开发应用程序的初期,只需将状态反映在View上即可,但一旦功能变多,介面上的展示将会根据使用者的操作而有不同,因此需要熟悉Flutter的状态管理机制。

Widget树
在Flutter中几乎所有东西都属於Widget,而Widget以树的结构进行组织。Widget树又称为版面配置,并存在父子关系,但Widget只是描述,真正显示给使用者看的是Element,两者的关系是一对多,也就是一个Widget可以创造多个Element。

下图是Widget树的形式,如果一个Widget存在子Widget,那麽上一层的Widget就是父Widget,父Widget内则是子Widget。
https://ithelp.ithome.com.tw/upload/images/20210927/20140524n1mdLbTMY9.png

Context
Context代表元件上下文,对应到已建立的Widget树结构中某个Widget的位置参考,并视为Widget的一部分。每个Context只能对应一个Widget,如果一个Context对应到父Widget B,那麽Widget B对应的Context也包含了子Widget的Context,说明到这边可以理解Context彼此之间是紧密连结的,并形成一个Context树。

下图是Context树的示意图
https://ithelp.ithome.com.tw/upload/images/20210927/20140524UXaoX36rvg.png

State
(一) 介绍
State是对StatefulWidget的行为和版面配置进行叙述,State和Context有永久性的关联,而State不会改变其Context,当StatefulWidget元件需要改变时,可以透过setState( )来改变。

(二)State生命周期
https://ithelp.ithome.com.tw/upload/images/20210927/201405241kdxJ4awwO.png
这边介绍一些常用的State生命周期的方法
•initState:追加初始化方法,在Flutter生命周期中只会被执行一次。
•didChangeDependencies:当State对象的关系发生改变,此方法会被呼叫。
•build:建造画面。
•deactivate:切换页面。
•dispose:销毁元件、释放资源。

InheritedWidget
又称为父节点,也就是说InheritedWidget允许在Widget树中由上而下传递资讯,并支援跨级数据传递,在共享数据的环境中相当方便。
https://ithelp.ithome.com.tw/upload/images/20210927/20140524ND91LCAnjV.png

今天就介绍到这边,希望有帮助到大家,明天将会介绍事件处理,敬请期待。

参考资料
横跨Android及Apple的神话:用Dart语言神启Flutter大业3.4节
https://ithelp.ithome.com.tw/articles/10217200
https://www.ithome.com.tw/voice/138216
https://www.gushiciku.cn/pl/gxfL/zh-tw
https://www.twblogs.net/a/5bc158ff2b717711c9247a80
https://www.gushiciku.cn/pl/2EJs/zh-tw
https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/660334/
https://www.gushiciku.cn/pl/2EJs/zh-tw
https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/699344/


<<:  [Day27] CH13:画出你的藏宝图——图形使用者介面

>>:  TailwindCSS 从零开始 - 新增自己的 Utility

Day42 ( 电子元件 ) OLED 绘制数学图形

OLED 绘制数学图形 教学原文参考:OLED 绘制数学图形 这篇文章会使用 micro:bit 连...

【第30天】最终回

玉山竞赛心得 从朋友口中得知玉山银行和趋势科技举办了中文手写字辨识的比赛,於是我们召集资策会夥伴们组...

【Day30】我结束,换你了

挖,我居然真的完成这 30 天发文的活动,我觉得我好棒棒 XD。 统整 30 天的内容 给 Azur...

Engineering, Life Cycle Stages, and Processes

Engineering, Life Cycle Stages, and Processes Eng...

【第十九天 - Binary Tree题目分析】

先简单回顾一下,今天预计分析的题目:94. Binary Tree Inorder Travers...