Flutter + Firebase Я пытаюсь изменить displayName, но displayName является нулевым во всех отношениях - PullRequest
0 голосов
/ 03 мая 2020

Не могу добавить дополнительную информацию о пользователе с помощью функции 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 голосов
/ 03 мая 2020

После создания учетной записи с помощью метода .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});
}

Включите этот файл дартс на главной странице для имени пользователя.

См. это руководство для руководства. https://youtu.be/Jy82t4IKJSQ?list=PL4cUxeGkcC9j--TKIdkb3ISfRbJeJYQwC

0 голосов
/ 03 мая 2020

Вы сохраняете данные в Firestore и пытаетесь получить имя от Firebase Auth. Это две услуги. Вместо того, чтобы пытаться использовать пожарный магазин, вы могли бы

    FirebaseUser firebaseUser = await FirebaseAuth.instance.currentUser();
    var userUpdateInfo = UserUpdateInfo();
    userUpdateInfo.displayName = _name;
    firebaseUser.updateProfile(userUpdateInfo);
    await firebaseUser.reload();
    firebaseUser = await FirebaseAuth.instance.currentUser();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...