我是Riverpod的新手,正在尝试在我的Flutter应用程序中使用Riverpod实现下拉刷新,但似乎找不到任何好的在线教程。有人在使用Riverpod时在他们的Flutter应用程序中实现了下拉刷新吗?我已经到处寻找教程,但大多数都是在应用程序加载时进行简单的网络请求。提前感谢!
使用以下依赖项进行Riverpod和网络请求。 flutter_riverpod: ^0.12.1 dio: ^3.0.10
我是Riverpod的新手,正在尝试在我的Flutter应用程序中使用Riverpod实现下拉刷新,但似乎找不到任何好的在线教程。有人在使用Riverpod时在他们的Flutter应用程序中实现了下拉刷新吗?我已经到处寻找教程,但大多数都是在应用程序加载时进行简单的网络请求。提前感谢!
使用以下依赖项进行Riverpod和网络请求。 flutter_riverpod: ^0.12.1 dio: ^3.0.10
在刷新操作中,您可以使用context.refresh(yourProvider)
。非常好用。
在Riverpod 1.0.0及以上版本中,您可以使用ref.refresh(yourProvider)
事实证明,使用Riverpod (^1.0.0) 实现下拉刷新 UI 的 工作原理 如下:
提供程序:
final yourFutureProvider = FutureProvider<T>(....);
在 Build 方法内部:
return RefreshIndicator(
onRefresh: () async {
return await ref.refresh(yourFutureProvider);
},
这对我有用
Declare the provider
final sessionsProvider = FutureProvider<List<Session>>((ref) async {
final sessionServices = ref.read(sessionsServiesProvider);
return await sessionServices.getSessions();
});
add refresh indicator
RefreshIndicator(
onRefresh: () async => ref.refresh(sessionsProvider),
child: ...)
ref.refresh(yourFutureProvider.future)
,因为.refresh()
需要ProviderBase<Future<void>>
参数类型。 - IVLfinal yourFutureProvider = FutureProvider<T>(....)
中指定了<T>
,那么如果你调用ref.refresh(yourFutureProvider.future)
,它不会重新调用 future,除非你使用状态通知器。相反,如果你在定义 provider 时没有指定<T>
,你可以使用ref.refresh(yourFutureProvider)
来调用刷新。 - selan.refresh(upComingMoviesStateNotifierProvider.notifier) .getNextUpcomingMoviesPage()```
- Boris Kamtou