




资源介绍
视频数量:39个
总时长:5小时36分
课程介绍:
Riverpod 3进阶实战课
你有没有过这种经历:用Riverpod 2写了一陣子项目,突然发现某个状态变更的写法特别别扭?异步操作写起来啰嗦,错误处理散落各处,想验证一个Provider还得搭半天脚手架。这些问题不是你的错,而是Riverpod 2时代遗留下来的设计局限。Riverpod 3正是带着对这些痛点的回应而来的。
这门课不打算从头讲什么是Provider、什么是ConsumerWidget,那些在基础课里已经讲过了。这里只讲新东西——那些让Riverpod 3真正超越传统状态管理的设计。
一、Mutation:状态变更的新写法
传统写法里,增删改查这类操作往往要自己处理loading状态、捕获错误、做mounted检查,一套流程下来代码量不小。Mutation是Riverpod 3引入的核心概念,它把状态变更封装成可声明、可组合、可测试的单元。
课程从一个todo_legacy应用开始,用传统方式实现完整的待办事项功能,包括todoListProvider、completedCountProvider、filteredTodosProvider,以及HomePage、AddTodoPage、UpdateTodoPage三个页面的UI。然后在todo_mutation应用里用Mutation重写同样功能,对比两种写法的差异。登录功能也单独拎出来做了legacy和mutation两个版本对比。最后还会讲返回非void类型的Mutation,比如某些场景下你需要从变更操作里拿到返回值。
学完这部分,你会建立起一个清晰的判断:什么时候用传统Provider,什么时候用Mutation,以及Mutation到底帮你省了多少样板代码。
二、离线持久化:状态不会因为退出应用就消失
内存里的状态终究是暂时的,用户期望的是关掉App再打开,待办事项还在那儿。课程讲storageProvider和persist方法,把Mutation和持久化打通。
具体落地方案有两个:todo_mutation_sql用SQL数据库存储,适合数据结构复杂、需要查询的场景;todo_mutation_shared用SharedPreferences,适合轻量级的键值对数据。两种方案各有适用场景,课程都给出完整的实现过程。
三、现代标准与智能控制
这一章是Riverpod 3区别于旧版本最明显的地方,覆盖多个层面的改进。
自动重试解决了网络请求失败后手动重试的麻烦,配置好策略之后框架帮你处理。暂停与恢复让你可以在特定条件下暂停某个Provider的监听,恢复后自动重新订阅。Ref.mounted属性替代了之前繁琐的mounted检查,代码更简洁也更安全。
Provider生命周期在3版本里有重要变化,理解这些变化能帮你避免内存泄漏和不必要的重建。泛型支持让Provider的类型推断更加灵活。API统一化把之前零散的方法合并成一套一致的接口,用起来不再需要记一堆不同的方法名。
四、作用域管理:让Provider各管各的事
全局Provider多了之后,最头疼的就是状态污染——一个页面的修改影响了不该影响的地方。Scoping就是来解决这个问题的。
课程通过scoped_counter展示基础的scope用法,scope_optimize讲解如何优化scope的拆分策略,scoped_theme演示用scope管理主题切换,prop_drilling展示如何避免在widget树里层层传递参数。每个例子都是一个真实可运行的App,不是空泛的概念讲解。
五、测试体系:给状态管理上保险
写了这么多Provider和Mutation,不写测试等于裸奔。课程用六节课的篇幅把Riverpod测试讲透。
从Riverpod Test的基本概念讲起,然后逐一实战:storageProvider的测试怎么写,completedCountProvider这种派生状态的测试思路,filteredTodosProvider的过滤逻辑如何验证。最后重点讲todoListProvider的Mock和Fake两种测试策略,配有专门的mock_fake文档辅助理解两者本质区别。
这套课程适合谁
这门课是为已经用过Riverpod 2、想升级到3的Flutter开发者准备的。如果你刚接触Flutter状态管理,建议先去看基础课程。如果你写过一段时间Riverpod 2,在项目里碰到过异步处理繁琐、测试难写、状态污染这些困扰,这门课会告诉你Riverpod 3是怎么系统性地解决这些问题的。
学完之后,你对Riverpod 3的设计哲学会有完整的认知,Mutation会成为你处理状态变更的首选工具,离线持久化和作用域管理也都能直接落地到真实项目里。整套课程5个半小时,39个视频,每个知识点都配有可运行的代码案例。