继路由导航完成后,随着状态管理探索完毕,应用程序构建中的最后一块拼图已经到手。Flutter 实战系列小册再加一名成员:《Flutter 状态管理: 源码探索与实战》
1. 目前 Flutter 小册一览
- [
免费
]《Flutter 入门教程》
Flutter 框架层基础: 售价
3.5
元
- 《Flutter 绘制指南 - 妙笔生花》
- 《Flutter 动画探索 - 流光幻影》
- 《Flutter 手势探索 - 执掌天下》
- 《Flutter 滑动探索 - 珠联璧合》
- 《Flutter 布局探索 - 薪火相传》
- 《Flutter 渲染机制 - 聚沙成塔》
- 《Flutter 语言基础 - 梦始之地》
Flutter 实战系列: 售价
9.9
元
Flutter 实战系列的四部曲也将迎来最终篇。
2. 路由小册的内容介绍
本册主要探索 Flutter 状态管理的使用与底层原理实现,其中精心设计 5 个由简入难的功能需求,作为探索状态管理的切入点。主要有 4 个部分:
- 第一部分:引言与监听通知机制
从状态的含义开始说起,逐渐引入状态管理概念。理解状态管理涉及的核心内容,以及其存在的价值。另外,在真正介绍状态管理之前,全面分析监听体制机制的功能与价值,它们像齿轮一样,嵌在状态管理的底层中,啮合 驱动着状态管理的运作。
- 第二部分:探索四大类库使用
本模块将基于流行的四大状态管理类库,了解 provider、flutter_bloc、flutter_riverpod、get 的基本使用方式。并通过四个由简入难的需求,探讨状态管理的具体价值,以及在此基础上如何对功能需求代码进行层次划分。
- 第三部分:实践应用案例
本模块将通过一个较为全面的案例,介绍一下异步数据操作过程中如何管理状态数据。包括加载列表、增加、删除、修改、下拉刷新和上拉加载更多、搜索、搜索历史维护等异步任务。最后还会基于 sqlite 将数据通过本地数据库存储,进一步理解功能需求代码分层架构的意义。
- 第四部分:四大类库源码探索
前面是从使用的层面探讨状态管理的价值,最后一个模块将深入四个类库的源码,区分析状态管理的本质。从而可以知其所以然,了解了源码的实现方式,你就可以站在更高的角度去审视状态管理的内涵。使用时更加得心应手。
3. 本册的阅读环境
Flutter 环境版本对状态管理没什么太大的影响,而且目前主流的状态管理库已经区域稳定。本册将对四个主流的状态管理库进行探索和分析:
1 | arduino复制代码Flutter 3.19.5 • channel stable • https://github.com/flutter/flutter.git |
本册所有的源码,放在 github 中。阅读时建议结合项目代码 istate :
源码中案例的演进独立包装,其中的 main
文件可以独立运行。另外,可在介绍信息中查看对应步骤的情况:
4. 本册具体案例功能需求
本册精心设计了五个由简到繁的五个功能需求,来探讨状态管理在应用开发中的使用。
- 深浅主题色切换
深浅主题色是一个比较简单的需求,而且可以体现状态管理的价值。该功能需求中,在 主页
和 设置页
可以设置深浅主题色。在实现过程中,探讨同一个状态数据,如何在多处组件中触发修改:
浅色 | 深色 | 首页也提供切换操作 |
---|---|---|
b0b701b672f7eee95ea07e94e08f771.jpg | 5bd0c0cfbbe53b6aecab9ac32d61852.jpg | cf5df9a9515ba4a5cc6d4ef9efc2caf.jpg |
- 计数器需求
计数器作梦最开始的地方,承载着 Flutter 开发者最纯粹的回忆。本册中将对计数器的需求进行拓展:
- 点击增加计数器值
- 可设置步长
- 重置计数器
- 数据持久化存储。
计数器界面 | 设置步长 | 设置界面中可访问和操作数据 |
---|---|---|
ba348cd17dbc981dca76aa3a47c9671.jpg | 7cb3439909653362a248e6cd38b9a96.jpg | 29f4f6c744b96b8a6e8f8aad5d0dd39.jpg |
- github search 搜索
通过搜索 github 仓库,探讨网络请求的处理、以及搜索过程中的状态数据变化。并依次探讨对于一个功能需求的代码结构拆分:
未搜索 | 搜索中 | 搜索成功 |
---|---|---|
a63c21e3b823ecfb6bf4d74849a11e1.jpg | ce6e902f1309d67d7459fe7dbc2d756.jpg | 754ab5db244284ab5e18a5fa9c21071.jpg |
- 类库测试案例
在探讨四个状态管理库使用的过程中,会写一些小的测试代码。可以对比它们在完成同一功能需求,存在的差异性和共通点。以及探索源码时的调试测试案例。这里将其放在了第四个 Tab 中:
我的界面 | 功能案例页 | 调试测试页 |
---|---|---|
f0b5dffc1ecc3406d23c8932a7e942b.jpg | 6cbc407ea1209cd6e164aed93f4bc87.jpg | 19ebe129a744e0b80afbfb6c22997f7.jpg |
- 秘钥管理综合需求
本着以小见大的考量,本册设计了一个比较综合的案例。从一个记录秘钥的简单的功能入手,逐步展开拓展功能需求。其中包括:
- 秘钥生成器的操作。
- 秘钥列表的增删改查交互与数据异步操作。
- 列表数据的刷新、加载更多功能。
- 搜索、搜索历史的维护。
- 数据库持久化等。
需要提交 | 提交中 | 提交成功 |
---|---|---|
image.png | image.png | c2f0d4fcae9a5ba75fa9e0fff7d8ad0.jpg |
删除与修改交互:
删除的 ui 交互 | 删除时 loading 状态 | 修改操作 |
---|---|---|
65.gif | 66.gif | 70.gif |
下拉刷新和加载更多
下拉刷新成功 | 下拉刷新失败 | 上拉加载更多 |
---|---|---|
61.gif | 62.gif | 64.gif |
搜索和历史记录:
跳转到搜索页 | 搜索功能 | 删除历史 |
---|---|---|
73.gif | 74.gif | 76.gif |
感谢大家一直以来的支持和陪伴,后期还会带来更精彩的内容~
本文转载自: 掘金