
岛上码农@公众号同名
2022/01/17阅读:49主题:橙心
Flutter 状态管理文章合集
前言
从筹划写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 中比较流行的插件做一个横向对比。
作者介绍
