Flutter高效开发利器:Riverpod框架简介及实践指南
头像 鸿蒙小助手 2025-06-10 17:58:16    发布
3141 浏览 0 点赞 0 收藏

1 简介

Riverpod 是一个用于 Flutter 的状态管理库,由 Provider的作者开发,是对 Provider的重构和改进,提供一种更灵活,更简洁和高效的状态管理工具,它具有以下几个关键特性:

  • 类型安全: 在运行时和编译时都能获得类型检查,减少运行时错误,提高代码的可靠性和可维护性;
  • 不依赖 BuildContext:允许在不依赖 BuildContext 的情况下访问和管理状态,简化了许多常见的 Flutter 状态管理问题,使代码更加清晰和易于维护。
  • 自动化状态清理:状态会在不再需要时自动清理,避免内存泄漏,提高了应用的性能和稳定性;
  • 支持 “Scoped” 状态 提供了更强大的 scoping 机制,可以在不同的widget树中有选择地管理和隔离状态,有助于更细粒度的状态管理和性能优化。

2 基础使用

ProviderRiverpod 库的核心概念,主要负责管理和更新状态,可以将 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官方文档
©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
头像

鸿蒙小助手

致力于为鸿蒙开发者谋福利

1009

帖子

7

提问

13565

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255