在 Flutter 中使用 Riverpod 实现 pull-to-refresh

Posted

技术标签:

【中文标题】在 Flutter 中使用 Riverpod 实现 pull-to-refresh【英文标题】:Implementing pull-to-refresh in Flutter with Riverpod 【发布时间】:2021-03-17 20:12:31 【问题描述】:

我是 Riverpod 的新手,我试图在我的 Flutter 应用程序中使用 Riverpod 实现拉取刷新,但似乎在网上找不到任何好的教程。有没有人在使用 Riverpod 时在他们的 Flutter 应用程序中实现了拉动刷新。我到处寻找教程,但我发现的大多数是应用程序加载时的简单网络请求。提前致谢!

将这些依赖项用于riverpod 和网络请求。 flutter_riverpod: ^0.12.1 迪奥:^3.0.10

【问题讨论】:

【参考方案1】:

您可以在刷新操作中使用context.refresh(yourProvider)。效果很好。

在 Riverpod 1.0.0 及以上版本,您可以使用ref.refresh(yourProvider)

【讨论】:

澄清一点:在riverpod 1.0.0 中,您应该使用ref.refresh(yourFutureProvider.future),因为.refresh() 期待ProviderBase<Future<void>> 参数类型。 实际上不是:如果你 ref.refresh(yourFutureProvider.future) 因为你在 final yourFutureProvider = FutureProvider<T>(....) 中指定了 <T> 它不记得未来至少你使用状态通知器我猜。相反,如果您在未指定<T> 的情况下定义提供程序,则可以使用ref.refresh(yourFutureProvider) 调用刷新【参考方案2】:

原来使用 Riverpod (^1.0.0) 拉动刷新 UI 的工作方式是这样的:

提供者:

final yourFutureProvider = FutureProvider<T>(....);

Build 方法内部:

                  return RefreshIndicator(
                    onRefresh: () async 
                      return await ref.refresh(yourFutureProvider);
                    ,

【讨论】:

以上是关于在 Flutter 中使用 Riverpod 实现 pull-to-refresh的主要内容,如果未能解决你的问题,请参考以下文章

使用 RiverPod 状态管理 Flutter 更改 Text 值

Flutter状态管理之Riverpod

Flutter状态管理之Riverpod 2.0

Flutter状态管理之Riverpod 2.0

Flutter状态管理之Riverpod 2.0

Flutter 用 provider 和 riverpod 制作表单