[英]Riverpod's StreamProvider yields StreamValue only once | Flutter & Hive
[英]What is the RiverPod way to Consume a StreamProvider outside of Flutter - Dart only
目标:验证登录用户在我的帐户FireStore集合中有一个帐户信息文档。
我的代码基于RiverPod站点上引用的 Flutter /firebase 启动器架构,作为如何使用 RiverPod 进行 state 管理的示例。
我正在使用最新的flutter_riverpod package。
firestore_database.dart - 实现远离 ui 的模型/服务层。
Stream<Account> accountStream() => _service.documentStream(
path: FirestorePath.account(uid),
builder: (data, documentId) => Account.fromMap(data, uid),
);
account_setup_service.dart
final accountStreamProvider = StreamProvider.autoDispose((ref) {
final database = ref.watch(databaseProvider);
return database != null ? database.accountStream() : const Stream.empty();
});
accountStreamProvider
? 同样,我的目标是简单地评估 stream 是否为空或是否包含文档。Consumer(builder: (context, watch, _) {
final accountAsyncValue = watch(accountStreamProvider);
return accountAsyncValue.when(
// what do I do here to validate that there is an account
// info document for the currently authorized user
// using the accountStreamProvider?
// I don't want to return a widget...
data: (account) => null,
loading: () => null,
error: (_, __) => null,
);
});
在 RiverPod 文档站点上,我阅读了“ 仅使用 Dart 读取提供程序之外的提供程序”参考,但是,我不确定 go 在哪里使用 ZF7B44CFAFD5C52223D5498E 和评估数据是否存在。
您发布的文档链接显示了如何从ProviderContainer
获取StateController
。
看起来StateController
class 有一个stream
属性,所以你可以听一下:
https://pub.dev/documentation/riverpod/latest/riverpod/StateController-class.html
(我还没有尝试过,但这就是我可以从文档中得出的结论)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.