首页 > 解决方案 > 更改显示名称花费的时间太长。Flutter 和 FIrebase

问题描述

我正在尝试制作我的用户列表,并且显示名称在更新配置文件后需要进行一些更改,但到那时列表中的名称部分已经有一个空值。

final User user = (await
    _auth.createUserWithEmailAndPassword(
      email: emailR,
      password: passwordR,
    )
    ).user;
    user.updateProfile(displayName: usernameR);

    emailc.clear();
    passwordc.clear();
    usernamec.clear();

    DateTime now = DateTime.now();
    String dt = "${now.day.toString().padLeft(2,'0')}/${now.month.toString().padLeft(2,'0')}/${now.year.toString()} ${now.hour.toString()}:${now.minute.toString()}";

    FirebaseFirestore.instance.collection("users").doc(user.uid).set({
      "id": user.uid,
      "name": user.displayName,
      "email": user.email,
      "created_at": dt,
    });

我认为这是一个时间问题的原因是因为在我第一次注册时显示用户名的主页上,它会显示“嘿,null”,之后每次都会显示正确的用户名。

标签: firebasefluttergoogle-cloud-firestorefirebase-authentication

解决方案


updateProfile调用是异步操作,user.displayName在该操作完成之前不会更新。幸运的是,它返回 a Future,因此您可以await在调用中使用它来等待它完成,就像您已经为createUserWithEmailAndPassword.

所以:

await user.updateProfile(displayName: usernameR);

推荐阅读