在 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的主要内容,如果未能解决你的问题,请参考以下文章