当前位置:  开发笔记 > 编程语言 > 正文

Flutter-firebase_auth updateProfile方法不起作用

如何解决《Flutter-firebase_authupdateProfile方法不起作用》经验,为你挑选了1个好方法。

我正在使用Flutter和Firebase创建应用程序。我有一些奇怪的问题。我正在创建身份验证,并且工作正常,但是当我尝试向Firestore数据库中添加一些集合时,displayName的记录设置为null。

Future createUser(email, password, displayName) async {
    final FirebaseUser user = await _auth.createUserWithEmailAndPassword(
        email: email, password: password);

    UserUpdateInfo info = new UserUpdateInfo();
    info.displayName = displayName;
    _auth.updateProfile(info);

    Firestore.instance.collection('users').document().setData({
      'name': user.displayName,
      'uid': user.uid,
      'email': user.email,
      'isEmailVerified': user.isEmailVerified,
      'photoUrl': user.photoUrl,
    });

    return user;
  } 

这是创建用户的Future类。

void _handleSubmitted() {
    userAuth
        .createUser(
        emailController.text, passwordController.text, nameController.text)
        .then((onValue) {
      print("Sign Up button clicked: $onValue");

    });
  }

单击“注册”按钮时,此方法为处理方法。

和收藏看起来像这张照片。



1> Frank van Pu..:

如果我没记错的话,致电时本地用户配置文件不会立即更新updateProfile。这意味着您应该只将本地值写入数据库(最简单),或者强制重新加载概要文件(最安全)。

写局部值

如前所述,这是最简单的方法:

Firestore.instance.collection('users').document().setData({
  'name': displayName,
  'uid': user.uid,
  'email': user.email,
  'isEmailVerified': user.isEmailVerified, // will also be false
  'photoUrl': user.photoUrl, // will always be null
});

请注意,该值isEmailVerified始终为false,并且photoUrl始终null位于新创建的电子邮件+密码帐户中。

强制重新加载配置文件

您可以通过调用FirebaseUser.reload()来强制重新加载用户数据:

_auth.updateProfile(info);
await user.reload();
user = _auth.getCurrentUser();

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有