firebase - 如何在返回流的函数中获取当前用户

标签 firebase flutter dart google-cloud-firestore firebase-authentication

  • 我有一个文档,其中包含用户的totalUnpaid金额。
  • 我正在使用StreamBuilder收听此文档。
  • 流是返回Stream的函数。

  • 注册新用户时,将创建一个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/

    相关文章:

    android - Firebase - 如何一次删除多个条目?

    android - flutter 运行命令不会在 iOS 模拟器中启动

    dart - dart从Map扩展产生错误,指出Map中的默认构造函数无法生成

    ios - 处理来自 continueUserActivity 方法的 Firebase 邀请

    ios - 如何将图像从 Firebase 下载到 Swift,然后更快地在 UIImageView 中显示它?

    flutter - 如何使 CupertinoActivityIndi​​cator 成为每个布局的顶部?

    firebase - flutter future :A build function returned null

    dart - Flutter:Offstage with Navigator inside not getting focus

    cookies - 无法获取用于iOS iOS Webview的Cookie

    android - 检索使用push()保存的Firebase数据