在扑朔迷离中,我该如何“融合"?Firebase onAuthStateChanged与user.getTokenId()返回流? [英] In flutter, how can I "merge" Firebase onAuthStateChanged with user.getTokenId() to return a Stream?

查看:66
本文介绍了在扑朔迷离中,我该如何“融合"?Firebase onAuthStateChanged与user.getTokenId()返回流?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在扑朔迷离中,我试图访问自定义声明"以决定将显示哪个小部件,从而能够将用户作为Stream并将其转换为Class:

In flutter, I'm trying to access Custom Claims to decide which Widget I will show, I was able to get the user as Stream and convert it to a Class doing:

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


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

我想将user.getIdToken()Claims ['role']添加到User对象(即:User(uid:user.uid,角色:token.claims ['role'])),但是我我不确定如何将Future合并到Stream中.

I would like to add the user.getIdToken() claims['role'] to the User object (i.e.: User(uid: user.uid, role: token.claims['role']), but I'm not sure how to merge a Future into a Stream resulting in a Stream.

推荐答案

此问题有一个运算符".它称为 asyncMap .除了可以传递异步函数作为参数之外,它几乎与 map 具有相同的功能.

There is an "operator" for this problem. It is called asyncMap. It almost has the same functionality as map except you can pass an async function as the argument.

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;
}

这篇关于在扑朔迷离中,我该如何“融合"?Firebase onAuthStateChanged与user.getTokenId()返回流?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆