Flutter 小册 状态管理已上架

继路由导航完成后,随着状态管理探索完毕,应用程序构建中的最后一块拼图已经到手。Flutter 实战系列小册再加一名成员:《Flutter 状态管理: 源码探索与实战

s.juejin.cn/ds/iYwHaVxJ…

image.png


1. 目前 Flutter 小册一览

Flutter 框架层基础: 售价 3.5

Flutter 实战系列: 售价 9.9

Flutter 实战系列的四部曲也将迎来最终篇。


2. 路由小册的内容介绍

本册主要探索 Flutter 状态管理的使用与底层原理实现,其中精心设计 5 个由简入难的功能需求,作为探索状态管理的切入点。主要有 4 个部分:

image.png

  • 第一部分:引言与监听通知机制

从状态的含义开始说起,逐渐引入状态管理概念。理解状态管理涉及的核心内容,以及其存在的价值。另外,在真正介绍状态管理之前,全面分析监听体制机制的功能与价值,它们像齿轮一样,嵌在状态管理的底层中,啮合 驱动着状态管理的运作。

image.png

  • 第二部分:探索四大类库使用

本模块将基于流行的四大状态管理类库,了解 provider、flutter_bloc、flutter_riverpod、get 的基本使用方式。并通过四个由简入难的需求,探讨状态管理的具体价值,以及在此基础上如何对功能需求代码进行层次划分。

image.png

  • 第三部分:实践应用案例

本模块将通过一个较为全面的案例,介绍一下异步数据操作过程中如何管理状态数据。包括加载列表、增加、删除、修改、下拉刷新和上拉加载更多、搜索、搜索历史维护等异步任务。最后还会基于 sqlite 将数据通过本地数据库存储,进一步理解功能需求代码分层架构的意义。

image.png

  • 第四部分:四大类库源码探索

前面是从使用的层面探讨状态管理的价值,最后一个模块将深入四个类库的源码,区分析状态管理的本质。从而可以知其所以然,了解了源码的实现方式,你就可以站在更高的角度去审视状态管理的内涵。使用时更加得心应手。

image.png


3. 本册的阅读环境

Flutter 环境版本对状态管理没什么太大的影响,而且目前主流的状态管理库已经区域稳定。本册将对四个主流的状态管理库进行探索和分析:

image.png

1
2
3
4
arduino复制代码Flutter 3.19.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 300451adae (12 days ago) • 2024-03-27 21:54:07 -0500
Engine • revision e76c956498
Tools • Dart 3.3.3 • DevTools 2.31.1

本册所有的源码,放在 github 中。阅读时建议结合项目代码 istate

github.com/toly1994328…

image.png

源码中案例的演进独立包装,其中的 main 文件可以独立运行。另外,可在介绍信息中查看对应步骤的情况:

image.png


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

感谢大家一直以来的支持和陪伴,后期还会带来更精彩的内容~

e5497a6729131a4611e90c7b1495ab7.jpg

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%