美文网首页
Riverpod学习1

Riverpod学习1

作者: flyfishcxy | 来源:发表于2023-08-09 14:20 被阅读0次

    1 为什么用Riverpod?

    Riverpod是什么?

    Riverpod(Provider的字谜)是用于Flutter/Dart的一种反应式缓存框架。

    通过使用声明性和反应式编程,Riverpod能够为您的应用程序处理大部分逻辑。它可以执行带有内置错误处理和缓存的网络请求,并在必要时自动重新获取数据。

    动机:

    现代应用程序很少随着渲染其用户界面所需的所有信息而来。相反,数据通常是从服务器异步获取的。

    问题在于,处理异步代码是困难的。虽然Flutter提供了一些方法来创建状态变量并在更改时刷新UI,但仍然相当有限。仍然存在许多未解决的挑战:

    异步请求需要在本地进行缓存,因为每当UI更新时重新执行它们是不合理的。

    由于我们有一个缓存,如果不小心处理,我们的缓存可能会变得过时。

    我们还需要处理错误和加载状态。

    在大规模情况下解决这些问题可能会很困难,并且它们受到许多功能的影响,例如:

    下拉刷新

    无限列表/滚动获取

    边输入边搜索

    防抖动的异步请求

    在不再使用时取消异步请求

    乐观的UI

    离线模式

    这些功能可能很难实现,但对于良好的用户体验至关重要。

    然而,很少有软件包直接尝试解决这些问题,很多工作必须手动完成。

    这就是Riverpod的用武之地。

    Riverpod尝试通过提供一种受到Flutter小部件启发的全新的编写业务逻辑的方式来解决这些问题。在许多方面,Riverpod类似于小部件,但用于状态管理。

    通过使用这种新方法,这些复杂的功能大部分都是默认完成的。剩下的就是专注于您的用户界面。

    持怀疑态度吗?以下是一个示例。以下代码片段是使用Riverpod实现的Pub.dev客户端应用程序的简化版本。

    代码链接:

    https://github.com/rrousselGit/riverpod/blob/master/examples/pub/lib/search.dart#L19

    这个代码片段包含了您需要的所有业务逻辑,用于实现"边输入边搜索"、"下拉刷新"和"无限列表",同时处理错误和加载状态。

    2 开始:

    在深入了解Riverpod的内部机制之前,让我们从基础开始:安装Riverpod,然后编写一个"Hello World"示例。

    需要安装的插件包说明:

    在开始之前,您需要知道Riverpod分布在多个包中,其使用方式略有不同。您想要安装的Riverpod变体取决于您正在制作的应用程序。您可以参考以下表格,以帮助您决定使用哪个包:

    插件包截图

    安装riverpod插件

    在pubspec.yaml安装这个插件包:

    安装插件包

    执行dart pub get命令,这样插件riverpod插件包就安装到程序上了

    写一个helloworld例子:

    程序截图

    日志截图

    相关文章

      网友评论

          本文标题:Riverpod学习1

          本文链接:https://www.haomeiwen.com/subject/clzopdtx.html