鸿蒙小助手 2025-06-10 17:58:16 发布1 简介
Riverpod 是一个用于 Flutter 的状态管理库,由 Provider的作者开发,是对 Provider的重构和改进,提供一种更灵活,更简洁和高效的状态管理工具,它具有以下几个关键特性:
- 类型安全: 在运行时和编译时都能获得类型检查,减少运行时错误,提高代码的可靠性和可维护性;
- 不依赖 BuildContext:允许在不依赖 BuildContext 的情况下访问和管理状态,简化了许多常见的 Flutter 状态管理问题,使代码更加清晰和易于维护。
- 自动化状态清理:状态会在不再需要时自动清理,避免内存泄漏,提高了应用的性能和稳定性;
- 支持 “Scoped” 状态 提供了更强大的 scoping 机制,可以在不同的widget树中有选择地管理和隔离状态,有助于更细粒度的状态管理和性能优化。
2 基础使用
Provider是Riverpod 库的核心概念,主要负责管理和更新状态,可以将 Provider看作是一个数据源,它负责提供数据,并在数据发生变化时通知相关的组件。它有以下几种常用的Provider:
- Provider:基础只读值;
- FutureProvider : 异步操作封装
- StreamProvider : 流式数据处理
- NotifierProvider: 提供一种更灵活的方式来管理状态和业务逻辑,支持任何类型的 "Notifier"
- AsyncNotifierProvider : 专门用于管理异步操作的状态,如网络请求,它提供了一个结构化的方法来处理异步数据的加载、成功、错误和状态更新
- 其他
使用之前,我们首先要在pubspec.yaml文件中添加对应的依赖:

一个基础使用Riverpod库的步骤为:
- 创建一个Provider: 创建一个Provider,去观察某一个值,并在值有变化时去通知监听者;
- 使用Provider : 使用Provider的前提是使用了ProviderScope来包裹对应的widget;
- 监听状态: 在对应的widget(这个widget需要继承自ConsumerWidget)中使用ref.watch方法来监听对应的值;
- 更新状态: 在对应的widget中使用ref.read方法获取对应的监听器来修改状态值;
2.1 简单使用
最简单的使用Riverpod的例子为

3 高级使用
3.1 组合状态
在实际开发中,应用的状态管理往往会涉及到多个相互关联的状态和复杂的业务逻辑,可以多个独立的状态类组合到一个类中,从而实现某个功能统一的管理

3.2 特定状态
若你想仅关注某个状态里的特定值,可借助select 功能达成此目的。这种方式十分高效,因为它能让组件只在特定值发生变化时才进行重建。

如果要用select处理比较复杂的状态,如状态是包括列表的,或者是需要进行计算转换的,关键在于高效提取所需数据并确保正确的状态比较,这里有几点经验可参考:
- 针对状态包含列表,可通过 map 或 where 过滤后提取数据:

- 避免返回对象,若要提取多个对象,优先返回一个元组而非新对象:

3.3 异步请求
使用FutureProvider或者StreamProvider 可以很容易构建出响应式的数据请求,比如我们需要从另一个服务中获取到用户id后,再去请求这个用户的数据,那 这里的功能利用FutureProvider 可以很简洁地写出来:

FutureProvider.autoDispose.family:
- autoDispose : 在没有组件监听时,会自动取消异步操作并释放资源,再次监听时,会重新触发操作
- family : 接收参数,动态生成不同的异步操作
而且FutureProvider会自动处理异步操作的不同状态(加载中、数据返回、出错),通过when方法可以根据不同状态展示相应的 UI。
3.4 其他
如果觉得手动写Provider的方式比较繁锁,Riverpod库也提供一注解的方式来简化,使用注解的话,需要增加一个依赖: riverpod_generator: ^2.4.0

写完后,需要在命令行执行一个命令:dart run build_runner build,然后就能很方便使用对应的Provider了。
4 总结
本文主要探讨了Riverpod框架的一些特点,包括它的的基础和高级使用方式,并希望通过本文能够帮助大家入门Riverpod并在实际开发中充分发挥Riverpod的优势,以一种更简洁,更方便的方式来管理应用的状态。
5 参考
- Riverpod应用场景分析
- 玩转状态管理之——Riverpod使用详解
- riverpod官方文档
相关推荐
鸿蒙小助手
3340
0
码农小马
7091
0
万少
8028
0
威哥爱编程
3858
0
鸿蒙小助手
7476
0
鸿蒙小助手
致力于为鸿蒙开发者谋福利
帖子
提问
粉丝
【划重点】HarmonyOS 应用市场审核 3.5 驳回“十大高频问题”全解析
2026-02-13 21:44:15 发布ArkUI框架运行原理与常见性能优化方案
2026-02-12 19:40:38 发布