【发布时间】:2019-11-07 14:50:20
【问题描述】:
我有一个使用 Firebase-storage 和 google-signin 的 Flutter 应用。 我想做的步骤很简单:
1- 使用 Google 登录(完成)。
2- 获取当前用户 ID(完成)。
3- 在为流构建器构建流时使用用户 ID(问题)。
到目前为止,我正在使用Future 来获取当前用户 ID,
然后在Where clause 中注入用户ID
.where('userId', isEqualTo: userId)
这就是我最终的结果:
这是我应该创建流的部分:
// Get document's snapshots and return it as stream.
Future<Stream> getDataStreamSnapshots() async {
// Get current user.
final User user = await FirebaseAuth().currentUser();
String userId = user.uid;
Stream<QuerySnapshot> snapshots =
db
.collection(db)
.where("uid", isEqualTo: userId)
.snapshots();
try {
return snapshots;
} catch(e) {
print(e);
return null;
}
}
这是我应该调用和接收流的部分,
...
children: <Widget>[
StreamBuilder<QuerySnapshot>(
stream: CALLING THE PREVIOUS FUNCTION,
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasData) {
...
}
...
但是这段代码不起作用,因为我无法获得 Future 应该返回的值?有什么想法吗?
非常感谢
【问题讨论】:
标签: firebase flutter dart google-cloud-firestore firebase-authentication