Firebase无法更改displayName,每种方式上displayName为null

时间:2020-05-03 19:31:16

标签: firebase flutter dart google-cloud-firestore firebase-authentication

无法通过await FirebaseAuth.instance .createUserWithEmailAndPassword(email: _email, password: _password);函数向我添加更多用户信息吗?

signup.dart文件的一部分:

 String _email, _password, _name;

  final formkey = new GlobalKey<FormState>();`

  Future<void> registered() async {
    if (formkey.currentState.validate()) {
      formkey.currentState.save();
      try {
        await FirebaseAuth.instance
            .createUserWithEmailAndPassword(email: _email, password: _password);
        FirebaseUser firebaseUser = await FirebaseAuth.instance.currentUser();
        Firestore.instance
            .collection("users")
            .document(firebaseUser.uid)
            .setData({"name": _name});
        await firebaseUser.reload();
        firebaseUser = await FirebaseAuth.instance.currentUser();
        print(
            "${firebaseUser.uid},${firebaseUser.email},${firebaseUser.displayName} , $_password this user has been created-----");
      } catch (e) {
        print("${e.message} message--------------------------------------");
      }
    } else {
      print("somthing went wrong");
    }
  }

我尝试了很多方法来做到这一点,但仍然没有结果

2 个答案:

答案 0 :(得分:1)

您正在将数据保存在Firestore中,并尝试从Firebase Auth中获取名称。这是两项服务。您可以尝试的不是使用Firestore,而是

    FirebaseUser firebaseUser = await FirebaseAuth.instance.currentUser();
    var userUpdateInfo = UserUpdateInfo();
    userUpdateInfo.displayName = _name;
    firebaseUser.updateProfile(userUpdateInfo);
    await firebaseUser.reload();
    firebaseUser = await FirebaseAuth.instance.currentUser();

答案 1 :(得分:-1)

使用方法 .createUserWithEmailAndPassword 创建帐户后,通过以下方式将用户的值传递给另一个类:

final FirebaseAuth _auth = FirebaseAuth.instance;

  //user object based on firebase
  User _userFromFirebase(FirebaseUser user){
    return user != null ? User(uid: user.uid):null;
  }

Future loginWithEmailAndPass(String email,String password)async{
    try{
      AuthResult result = await _auth.signInWithEmailAndPassword(email: email, password: password);
      FirebaseUser user = result.user;
      return _userFromFirebase(user);
    }catch(e){
      print(e.toString());
      return null;
    }
  }

通过创建新的飞镖文件将用户的值传递给新类

class User{
  final String uid;

  User({this.uid});
}

在主页中包含该dart文件作为用户名。

请参阅本教程以获取指导。 https://youtu.be/Jy82t4IKJSQ?list=PL4cUxeGkcC9j--TKIdkb3ISfRbJeJYQwC