Flutter状态管理的简单理解
2020-05-14 本文已影响0人
only_run
声明:本篇文字只是个人的理解,记录,由于水平有限理解粗浅 仅做参考
什么是状态管理?
Flutter中只有StateFull类型的Widget才有state,通过state管理widget的样式更新;状态管理,顾名思义 管理的是数据变化和widget的更新;
常见的状态管理方式
- widget管理自己的状态
- 父widget管理子widget的状态
- 混合管理(父Widget和子Widget都管理状态)
为什么要进行状态管理?
跨widget状态更新:通知另外一个widget进行状态更新
父子widget状态更新:父widget直接更新但是会触发子widget不必要的更新,通常会通知 子widget,由子widget更新
兄弟widget状态更新:共同的父widget直接更新,或者通知兄弟widget,由兄弟widget更新
另外widget之间通信科 可通过函数回调
但是如果 多个父子widget,多个兄弟widget,甚至祖先widget,进行通知状态更新;代码会非常繁琐臃肿,难以复用;更需要统一管理 进行简化。
怎样实现状态管理?
两种思路
- 思路1:数据总线 建立一对多的订阅关系,widget接收数据变化,并更新widget;例如:flutter版的event_bus
- 思路2:顶层widget管理数据 发出更新通知,下层widget接收并更新;
此外 下层widget 能够获取顶层widget持有的数据
例如:redux provider
参考 flutter状态管理