一、状态管理
在 Flutter 开发中,状态管理是一个永恒的话题。一般的原则是:如果状态是组件私有的,则应该由组件自己管理;如果状态要跨组件共享,则该状态应该由各个组件共同的父组件来管理。
对于组件私有的状态管理很好理解,但对于跨组件共享的状态,管理的方式就比较多了,比如:
- 使用全局事件总线
EventBus
(将在下一章中介绍)。
它是一个观察者模式的实现,通过它就可以实现跨组件状态同步:状态持有方(发布者)负责更新、发布状态,状态使用方(观察者)监听状态改变事件来执行一些操作。
1、什么是provider
gitHub https://github.com/rrousselGit/provider/blob/master/resources/translations/zh-CN/README.md
现有的 provider
provider
中提供了几种不同类型的「provider」,供不同类型的对象使用。
完整的可用列表参见 此处。
名称 | 描述 |
---|---|
Provider | 最基础的 provider 组成,接收一个任意值并暴露它。 |
ListenableProvider | 供可监听对象使用的特殊 provider。ListenableProvider 会监听对象,并在监听器被调用时更新依赖此对象的 widgets。 |
ChangeNotifierProvider | 为 ChangeNotifier 提供的 ListenableProvider 规范,会在需要时自动调用 ChangeNotifier.dispose 。 |
ValueListenableProvider | 监听 ValueListenable,并且只暴露出 ValueListenable.value 。 |
StreamProvider | 监听流,并暴露出当前的最新值。 |
FutureProvider | 接收一个 Future ,并在其进入 complete 状态时更新依赖它的组件。 |
网友评论