注册新用户时,将创建一个int 0字段的totalUnpaid文档。
然后,紧接着,我导航到显示当前的TotalUnpaid金额的主页。
以前,我已经将当前用户硬编码为字符串。
现在,我已经实现了Firebase身份验证,我希望主页显示新用户的totalUnpaid。
以前,我的信息流是这样的:
static Stream<DocumentSnapshot> getTotalUnpaid(String currentUser) {
final doc = Firestore.instance.collection(currentUser).document('totalUnpaid');
return doc.snapshots();
}
现在,我创建了此方法来获取当前用户: static Future<FirebaseUser> getCurrentUser() async {
final FirebaseUser user = await FirebaseAuth.instance.currentUser();
return user;
}
我如何在自己的信息流中使用此Future?我将不得不使用await,这将要求函数异步,这将要求Stream成为 future ,这将要求我的StreamBuilder成为FutureBuilder。
这将不是理想的,因为每次用户添加项目时,totalUnpaid需要更新。
最佳答案
您可以执行以下操作:
static Stream<DocumentSnapshot> getTotalUnpaid() async*{
final FirebaseUser user = await FirebaseAuth.instance.currentUser();
final doc = Firestore.instance.collection(user.uid).document('totalUnpaid');
yield* doc.snapshots();
}
将功能标记为async*
时,可以使用yield*
,它将返回Stream
中的值。假设您将
uid
用作集合名称,则以上内容将起作用。
关于firebase - 如何在返回流的函数中获取当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63056183/