在扑朔迷离中,如何将Firebase onAuthStateChanged与user.getTokenId()合并以返回流?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在扑朔迷离中,如何将Firebase onAuthStateChanged与user.getTokenId()合并以返回流?相关的知识,希望对你有一定的参考价值。

在混乱中,我试图访问自定义声明来决定我将显示哪个小部件,从而能够将用户作为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()声明['role']添加到User对象(即:User(uid:user.uid,角色:token.claims ['role']),但我是不知道如何将Future合并到Stream中以产生Stream。

答案

此问题有一个“操作员”。它称为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, token: tokenResult.token) : null;
}

以上是关于在扑朔迷离中,如何将Firebase onAuthStateChanged与user.getTokenId()合并以返回流?的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动图像中插入可点击的点?

神奇的 SQL 之扑朔迷离 → ON 和 WHERE,好多细节!

"军装照"泄露用户隐私信息?剧情反转扑朔迷离

sh 跑得扑朔迷离

如何将 FireBase 云消息传递令牌存储在 Android 的 firebase 数据库中?

笔记本电脑蓝屏了,如何解决?