Flutter 入门与实战(九十二):状态管理系列大汇总

2,358 阅读7分钟

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动。

前言

从筹划写Flutter 的状态管理开始,有预期会写很多篇,这是Flutter 开发的最为核心部分。统计了一下,2个多月,一共写了50来篇状态管理的文章了。本篇来对这些状态管理的文章进行一次汇总,方便大家需要时可以直接从本篇快速找到对应的文章。欢迎评论区交流,为了节省时间不迷路,强烈建议收藏!

基础原理篇

基础篇主要是介绍了状态管理的一些背景知识和实现机制,具体篇章如下:

Provider 系列

Provider是官方推荐的状态管理插件,也是最受欢迎的状态管理插件之一,其机制还是利用了 InheritedWidget 实现状态管理在组件树中共享。相关篇章如下:

Redux 系列

Redux 实际上是仿前端 Redux 库改造成了 flutter_redux 插件,借用了 Redux 的理念(见下图)。 image.png 通过 Redux 可以实现业务逻辑和界面的完全分离,具有更低的耦合度。Redux 系列的文章如下:

MobX

MobX 也是来源于 Web 端的响应式状态管理库,在 js 端是非常流行的(Github 超过24k 的 Star)。整个思想和 React 有些类似,也是通过调度Action 来完成状态对象的更新,然后视图作为状态对象的监听者会被刷新。 image.png MobX 的一个很大的优势是具有代码生成器,状态对象和更新动作都可以通过注解完成,从而简化代码的编写。配合依赖注入容器(如 GetIt)可以实现状态对象多个页面共享。MobX 的相关篇章如下:

GetX

GetX 是当前最流行的状态管理插件之一,由于其丰富的功能(不仅仅是状态管理),简单易用的接口使得很多开发者使用它作为项目的状态管理工具。关于GetX,我们写的篇幅有点多,如下所示:

BLoC

BLoC 全称为Business Logic Component,翻译过来即业务逻辑单元。从名称上看就知道主要是聚集业务。BLoX 是基于 Stream 实现的,整个思路其实和其他响应式的查不多,都是分成了状态更新动作,状态对象,以及通知状态依赖界面刷新。 值得一提的是,flutter_bloc 中直接复用了 Provider 的大量代码,使用方式也和 Provider 很类似,项目的发起者也是 Provider 的主要贡献者。 image.png BLoC 广受欢迎的一个重要因素是其理念更有助于设计合理的应用架构,关于 BLoC 的文章如下所示:

总结

Flutter 作为一个新生事物,从它的状态管理插件之多也可以看出来,越来越多的开发者参与到了 Flutter 的开源社区中来,贡献了很多优质的插件。这是一个好事情,但也会带来甜蜜的烦恼 —— 这么多的状态管理插件该如何选择?下一篇我们将通过数据分析来对 Flutter 中比较流行的插件做一个横向对比。

我是岛上码农,微信公众号同名,这是Flutter 入门与实战的专栏文章,提供体系化的 Flutter 学习文章。对应源码请看这里:Flutter 入门与实战专栏源码。如有问题可以加本人微信交流,微信号:island-coder

👍🏻:觉得有收获请点个赞鼓励一下!

🌟:收藏文章,方便回看哦!

💬:评论交流,互相进步!