如何显示多个帐户的name ?

2022-01-30 14:50:49 标签 flutterfirebase-authentication

我用firebase认证创建了我的帐户。

我现在可以保留displayName,但如果我发布消息显示当前帐户的名称,当我更改我的帐户时,名称也会更改。

我应该使用什么方法来检索旧的displayName值,我已经张贴在另一个帐户?

但就连应用程序中显示的名字也发生了变化。但是firestore仍然显示发布此消息的帐户的名称。

这是我的get displayName代码。

FirebaseUser currentUser;
Widget build(BuildContext context) {
Text("${currentUser.displayName}")}

更新disPlayName

Future _register() async {
    final FirebaseUser user = (await _auth.createUserWithEmailAndPassword(
      email: _emailController.text,
      password: _passwordController.text,
    ))
        .user;
        Navigator.pushReplacement(
          this.context, MaterialPageRoute(builder: (context) => MyHomePage()));
    FirebaseUser currentUser = await _auth.currentUser();
    var userUpdateInfo = UserUpdateInfo();
    userUpdateInfo.displayName = _nameController.text;
    await currentUser.updateProfile(userUpdateInfo);
    await currentUser.reload();
  }

更新! !

我用这种方法解决了,而且很有效!!

final DocumentSnapshot data;
Widget build(BuildContext context) {
Text(widget.data['displayName'])}

###如果你需要实时的状态你的currentUser,你需要使用authStateCanges监听器:

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user == null) {
      // SYNC your user to firestore
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

有了它,你将永远拥有正确的displayName。如果你只是得到FirebaseUser currentUser = await _auth。currentUser();它不会总是最新的,如果你改变displayName时,你的应用程序正在运行。

如果您正在将身份验证数据同步到Firestore,我可以建议在该侦听器中也这样做。这样你就不用在修改数据的时候去同步认证数据了。如果身份验证数据更改,侦听器将自动执行此操作。

当你在用户创建的一些帖子中保存displayName时,你可以创建一个云函数来同步旧的名称和新名称。

我希望这一切能帮助你理解Firebase中的认证状态,以及如何在应用状态和数据库中进行同步。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码