我想保持我的返回值为AsyncValue
而不是Stream
,所以我从Notifier
的build
方法返回StreamProvider
。在阅读了riverpod
的代码库之后,我看不出这样做有什么缺点,但我从来没有遇到过任何项目做这样的事情。这样好吗?或者是否存在将Stream
转换为AsyncValue
的任何直接方式。
final _userProvider = StreamProvider.autoDispose<User?>((ref) {
final repository = ref.watch(repositoryProvider);
return repository.getUser(); //returns Stream<User?>
});
class AuthNotifier extends AutoDisposeNotifier<AsyncValue<User?>> {
@override
AsyncValue<User?> build() {
return ref.watch(_userProvider);
}
Future<void> singOut() {
return ref.read(repositoryProvider).signOut();
}
}
final authProvider =
AutoDisposeNotifierProvider<AuthNotifier, AsyncValue<User?>>(
AuthNotifier.new);
1条答案
按热度按时间5ktev3wc1#
这很好,是的。能够做这样的事情是
build
方法&ref.watch
的目标只要不返回提供程序本身,而是返回提供程序公开的值,就没有问题: