【问题标题】:In flutter, how can I "merge" Firebase onAuthStateChanged with user.getTokenId() to return a Stream?在颤振中,我如何将 Firebase onAuthStateChanged 与 user.getTokenId() “合并”以返回 Stream?
【发布时间】:2020-06-29 17:51:21
【问题描述】:

在颤振中,我正在尝试访问自定义声明来决定我将显示哪个小部件,我能够将用户作为 Stream 并将其转换为 Class:

  Stream<User> get user {
return _auth.onAuthStateChanged
 .map(_userFromFirebaseUser);
  }


 User _userFromFirebaseUser(FirebaseUser user) {
    return user != null ? User(uid: user.uid) : null;
  }

我想将 user.getIdToken() claim['role'] 添加到 User 对象(即:User(uid: user.uid, role: token.claims['role']),但我'我不确定如何将 Future 合并到 Stream 中,从而生成 Stream。

【问题讨论】:

    标签: flutter dart firebase-authentication


    【解决方案1】:

    这个问题有一个“操作员”。它被称为asyncMap。它几乎具有与map 相同的功能,只是您可以将异步函数作为参数传递。

    Stream<User> get user {
      return _auth.onAuthStateChanged.asyncMap(_userFromFirebaseUser);
    }
    
    Future<User> _userFromFirebaseUser(FirebaseUser user) async {
      final tokenResult = await user.getIdToken();
    
      return user != null ? User(uid: user.uid, role: tokenResult.claims['role']) : null;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2020-11-14
      相关资源
      最近更新 更多