在 Flutter 之外使用 StreamProvider 的 RiverPod 方式是什么 - 仅限 Dart
What is the RiverPod way to Consume a StreamProvider outside of Flutter - Dart only
第一次使用 RiverPod 和一般的 Provider 概念。
目标: 验证登录用户在我的帐户中有帐户信息文档 FireStore 集合.
我的代码基于此 flutter/firebase starter architecture referenced on the RiverPod 站点作为如何使用 RiverPod 进行状态管理的示例。
我正在使用最新的 flutter_riverpod 软件包。
我的最小化代码:
firestore_database.dart - 实施 model/service 层远离 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();
});
这是我坚持的部分。其他一切都检查出来。如何在仅 Dart 上下文中使用 Flutter 之外的 accountStreamProvider
?同样,我的目标是简单地评估流是空的还是包含文档。
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 文档站点上,我已经阅读了“Reading a provider outside of providers using Dart only”参考,但是,我不确定去哪里使用它来使用流并评估数据(如果有的话)。
您发布的文档 link 显示了如何从 ProviderContainer
.
获取 StateController
看起来 StateController
class 有一个 stream
属性,所以你可以听一下:
https://pub.dev/documentation/riverpod/latest/riverpod/StateController-class.html
(我没试过,但我可以从文档中了解到)
第一次使用 RiverPod 和一般的 Provider 概念。
目标: 验证登录用户在我的帐户中有帐户信息文档 FireStore 集合.
我的代码基于此 flutter/firebase starter architecture referenced on the RiverPod 站点作为如何使用 RiverPod 进行状态管理的示例。
我正在使用最新的 flutter_riverpod 软件包。
我的最小化代码:
firestore_database.dart - 实施 model/service 层远离 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();
});
这是我坚持的部分。其他一切都检查出来。如何在仅 Dart 上下文中使用 Flutter 之外的 accountStreamProvider
?同样,我的目标是简单地评估流是空的还是包含文档。
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 文档站点上,我已经阅读了“Reading a provider outside of providers using Dart only”参考,但是,我不确定去哪里使用它来使用流并评估数据(如果有的话)。
您发布的文档 link 显示了如何从 ProviderContainer
.
StateController
看起来 StateController
class 有一个 stream
属性,所以你可以听一下:
https://pub.dev/documentation/riverpod/latest/riverpod/StateController-class.html
(我没试过,但我可以从文档中了解到)