Riverpod学习1

2023-08-09  本文已影响0人  flyfishcxy

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例子:

程序截图

日志截图

上一篇 下一篇

猜你喜欢

热点阅读