我正在使用Riverpod 2提供商从未来提供商获取值,如下所示。
@riverpod
Future<AppUser> fetchCurrentUser(FetchCurrentUserRef ref) async {
// usersRef is the Firebase ODM refence here
final ref = await usersRef.doc(FirebaseAuth.instance.currentUser!.uid).get();
return ref.data!;
}
我使用上面的提供程序,使用ref.watch(fetchCurrentUserProvider).when()
在UI中显示。一切正常。
我明白这些值将被缓存以备下次使用。
我要找的是避免异步when()
每次消费时。我怎样才能使最初的未来调用只发生一次,这样我就可以使用ref
而不用担心异步性质。
我仍然想使用Riverpod进行状态管理,但要避免处理加载、错误和未来提供商的when动作。
当我想使用它时,我将直接获得值,如ref.watch(fetchCurrentUserProvider).avatar_url
。
你不应该在任何地方使用when
。在你使用结果的任何地方,都有一个变化它处于加载或错误状态。所以你应该处理这些
如果你绝对确定你的未来已经解决,你可以做ref.watch(provider).requireValue.whatever