【发布时间】:2021-10-20 15:36:40
【问题描述】:
我一直在尝试合并两个 Riverpod StreamProvider。 目标是根据来自 Firestore 的其他数据对 Firestore 执行查询以获取数据,如下所示:
- 从 Firestore 文档中获取用户数据
- 使用该数据执行另一个查询
这是我共享 FirestoreDatabase 类实例的数据库提供程序:
final databaseProvider = Provider<FirestoreDatabase>((ref) {
final auth = ref.watch(authStateChangesProvider);
if (auth.data?.value?.uid != null) {
return FirestoreDatabase(uid: auth.data!.value!.uid);
}
throw UnimplementedError();
});
然后我创建了一个 StreamProvider 来获取用户的数据
final userProvider = StreamProvider<UserModel>((ref) {
final database = ref.watch(databaseProvider);
return database.getUser();
});
现在我需要创建最后一个提供程序,但我无法使其工作。 这是我从现在开始写的:
final nodesProvider = StreamProvider<List<Node>>((ref) {
final database = ref.watch(databaseProvider);
final user = ref.watch(userProvider);
//... some code to await user data fetching
// user.nodes contains the list I need to pass in order to perform the query
return database.getNodes(user.nodes);
});
有人可以帮助我或给我一个提示吗? 提前致谢
【问题讨论】:
标签: flutter google-cloud-firestore riverpod