在扑朔迷离中,如何将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,好多细节!