目前我正在刷新一个 FutureProvider,它负责从 Firebase 获取数据并将其显示在一个简单的 ListView 中液体拉动刷新 https://pub.dev/packages/liquid_pull_to_refresh包,这会导致列表消失,加载指示器再次显示,最后列表再次显示。
我想要实现的是保持列表显示,并且仅在获取完成后更新它。我正在使用 Riverpod 进行状态管理。
提供者:
final userProfileProvider = FutureProvider.family<FullUserModel?, String?>((ref, value) => ref.read(databaseServiceProvider).getFullUserModel(value));
刷新部分:
LiquidPullToRefresh(
onRefresh: () async {
ref.refresh(userProfileProvider(uid));
},
child: ListView()
)
对此有什么好的方法吗?
这不再是问题,因为 Riverpod 2.0+ 具有新的刷新行为。现在,它在加载时返回先前的数据/错误值。
提供程序发出 AsyncValue.data 或 AsyncValue.error 后,该提供程序将不再发出 AsyncValue.loading。
相反,它将重新发出最新值,但属性 AsyncValue.isRefreshing 为 true。
这允许 UI 在刷新提供程序时继续显示以前的数据/错误。
如果您希望在刷新数据时有选择地显示加载指示器或其他一些元素,您可以简单地查找布尔值AsyncValue.isRefreshing
.
Source https://pub.dev/packages/riverpod/versions/2.0.0-dev.5/changelog#200-dev0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)