小知识,大挑战!本文正在参与「程序员必备小知识」创作活动。
前言
从筹划写Flutter 的状态管理开始,有预期会写很多篇,这是Flutter 开发的最为核心部分。统计了一下,2个多月,一共写了50来篇状态管理的文章了。本篇来对这些状态管理的文章进行一次汇总,方便大家需要时可以直接从本篇快速找到对应的文章。欢迎评论区交流,为了节省时间不迷路,强烈建议收藏!
基础原理篇
基础篇主要是介绍了状态管理的一些背景知识和实现机制,具体篇章如下:
- Flutter 入门与实战(三十八):从相亲来看有状态和无状态组件
- Flutter 入门与实战(三十九):Flutter渲染模式详解
- Flutter 入门与实战(四十):以购物车为例初探状态管理
- Flutter入门与实战(四十一): 从InheritedWidget深入了解状态管理机制(上)
- Flutter入门与实战(四十二): 从InheritedWidget深入了解状态管理机制(下)
- Flutter 入门与实战(四十三):setState 和 ModelBinding用法对比
- Flutter入门与实战(四十四):从源码分析setState 的时候到底发生了什么?
- Flutter 入门与实战(四十五):万字长文!一文搞懂InheritedWidget 局部刷新机制
Provider 系列
Provider是官方推荐的状态管理插件,也是最受欢迎的状态管理插件之一,其机制还是利用了 InheritedWidget 实现状态管理在组件树中共享。相关篇章如下:
- Flutter 入门与实战(四十七):使用 Provider 改造💩一样的代码,代码量降低了2/3!
- Flutter 入门与实战(四十八):使用MultiProvider实现多状态同时管理
- Flutter 入门与实战(四十九):Provider 可以做嵌套状态管理吗?
- Flutter 入门与实战(五十): Provider实现不相关页面状态共享
- Flutter 入门与实战(五十三):仿掘金个人主页,学习 FutureProvider 状态管理
- Flutter 入门与实战(五十四):Provider 之监听状态的局部变化
- Flutter 入门与实战(五十五):和 Provider 一起玩 WebSocket
- Flutter 入门与实战(五十六):让模拟器和和邮递员(Postman)聊聊天
- Flutter 入门与实战(五十七):两个模拟器来聊天 — Provider 综合应用
Redux 系列
Redux 实际上是仿前端 Redux 库改造成了 flutter_redux 插件,借用了 Redux 的理念(见下图)。
通过 Redux 可以实现业务逻辑和界面的完全分离,具有更低的耦合度。Redux 系列的文章如下:
- Flutter入门与实战(五十八): 看 Flutter 如何分享 React 的 Redux状态管理
- Flutter 入门与实战(五十九):手把手带你使用 Redux 的中间件实现异步状态管理
- Flutter 入门与实战(六十):以购物清单为例讲述 Redux 的状态如何多组件共享
- Flutter入门与实战(六十一):Redux 之利用中间件完成离线存储购物清单
- Flutter 入门与实战(六十二):开发一个通用的购物车数量加减组件
- Flutter 入门与实战(六十三):Redux之利用 distinct 属性进行性能优化
- Flutter 入门与实战(六十四):这篇很长,为了性能,你忍一下 —— 从源码看 flutter_redux精准刷新
MobX
MobX 也是来源于 Web 端的响应式状态管理库,在 js 端是非常流行的(Github 超过24k 的 Star)。整个思想和 React 有些类似,也是通过调度Action 来完成状态对象的更新,然后视图作为状态对象的监听者会被刷新。
MobX 的一个很大的优势是具有代码生成器,状态对象和更新动作都可以通过注解完成,从而简化代码的编写。配合依赖注入容器(如 GetIt)可以实现状态对象多个页面共享。MobX 的相关篇章如下:
- Flutter 入门与实战(六十六):听说 MobX 很流行,进来了解一下?
- Flutter 入门与实战(六十七):教你一个让编码速度飞起的方法!
- Flutter 入门与实战(六十八):MobX 获取网络数据来渲染酷炫的曲线
- Flutter 入门与实战(六十九):MobX 如何实现多组件的状态共享?
- Flutter 入门与实战(七十):从源码解析 MobX 响应式刷新机制。
GetX
GetX 是当前最流行的状态管理插件之一,由于其丰富的功能(不仅仅是状态管理),简单易用的接口使得很多开发者使用它作为项目的状态管理工具。关于GetX,我们写的篇幅有点多,如下所示:
- Flutter 入门与实战(七十一):GetX — Flutter 开发的百宝箱
- Flutter 入门与实战(七十二):GetX 状态管理从入门到入迷
- Flutter 入门与实战(七十三):再仿掘金个人主页来看 GetX 和 Provider 之间的 PK
- Flutter 入门与实战(七十四):GetxController 的生命周期详解
- Flutter 入门与实战(七十五):模拟红绿灯来看GetX的定向刷新
- Flutter 入门与实战(七十六):GetX 响应式状态管理简介
- Flutter 入门与实战(七十七):这个中秋,岛上码农用代码画诗带你感受海边浪漫月夜
- Flutter 入门与实战(七十八):科学揭秘为什么在掘金抽奖总是抽了个寂寞
- Flutter入门与实战(七十九):稳住了,别抖!—— 看GetX 的Worker如何防抖
- Flutter 入门与实战(八十):使用GetX构建更优雅的页面结构
- Flutter 入门与实战(八十二):想切就切!看如何使用依赖注入快速切换Mock数据和真实接口
- Flutter 入门与实战(八十三):GetX 状态管理怎么用,看这一篇就够了!
- Flutter 入门与实战(八十四):GetX 真的那么香吗?
BLoC
BLoC 全称为Business Logic Component,翻译过来即业务逻辑单元。从名称上看就知道主要是聚集业务。BLoX 是基于 Stream 实现的,整个思路其实和其他响应式的查不多,都是分成了状态更新动作,状态对象,以及通知状态依赖界面刷新。 值得一提的是,flutter_bloc 中直接复用了 Provider 的大量代码,使用方式也和 Provider 很类似,项目的发起者也是 Provider 的主要贡献者。
BLoC 广受欢迎的一个重要因素是其理念更有助于设计合理的应用架构,关于 BLoC 的文章如下所示:
- Flutter 入门与实战(八十五):GitHub 高赞的BLoC 简介
- Flutter 入门与实战(八十六):不到40行代码手撸一个BlocProvider
- Flutter 入门与实战(八十七):BlocProvider —— 你是 Provider 失散多年的兄弟吗?
- Flutter 入门与实战(八十八):灵活易用的Bloc 界面构建组件 —— BlocBuilder
- Flutter 入门与实战(八十九):使用BlocListener处理状态变化
- Flutter 入门与实战(九十):使用 BlocConsumer 同时构建响应式组件和监听状态
- Flutter 入门与实战(九十一):使用 RepositoryProvider简化父子组件的传值
总结
Flutter 作为一个新生事物,从它的状态管理插件之多也可以看出来,越来越多的开发者参与到了 Flutter 的开源社区中来,贡献了很多优质的插件。这是一个好事情,但也会带来甜蜜的烦恼 —— 这么多的状态管理插件该如何选择?下一篇我们将通过数据分析来对 Flutter 中比较流行的插件做一个横向对比。
我是岛上码农,微信公众号同名,这是Flutter 入门与实战的专栏文章,提供体系化的 Flutter 学习文章。对应源码请看这里:Flutter 入门与实战专栏源码。如有问题可以加本人微信交流,微信号:
island-coder。👍🏻:觉得有收获请点个赞鼓励一下!
🌟:收藏文章,方便回看哦!
💬:评论交流,互相进步!