I / flutter(14318):NoSuchMethodError:类“ FirebaseUser”没有实例获取器“ firstname”

时间:2019-01-17 07:05:35

标签: firebase dart flutter

我正在尝试更新正在构建的应用程序的用户的用户资料。用户信息存储在Firebase中,应用程序以运行在android上的dart编码。

我尝试从https://firebase.google.com/docs/auth/web/manage-users网站实现示例。

 51   createUser() {
 52     if (checkFields()) {
 53       //Perform Login
 54       var user = FirebaseAuth.instance.currentUser();
 55       FirebaseAuth.instance
 56           .createUserWithEmailAndPassword(email: _email, password: _password)
 57           .then((user) {
 58             var  userUpdateInfo = new UserUpdateInfo();
 59             user.updateProfile(userUpdateInfo)
                    .then((user) {
 60                   userUpdateInfo.displayName = _Firstname;
 61                   FirebaseAuth.instance
                                  .currentUser()
                                  .then((user)  {
                                    UserManagement().storeNewuser(user, context);
 62                               })
                                  .catchError((e) {print(e);});
 63                 })
                    .catchError((e) {
 64                   print(e);
 65                 });
 66                 //UserManagement().storeNewuser(user, context);
 67                 Navigator.of(context).pop();
 68                 Navigator.of(context)
                             .pushReplacementNamed('/landingpage');
 69           })
              .catchError((e) {
 70             print("ivlvvliyviv");
 71           });
 72     }
 73   }

应用程序运行平稳,不会崩溃,但是当用户更新名字但在Firebase上未更改时,第60行被假定为更新了Firebase上的名字字段,这是我添加我的名字字段

Firestore.instance
         .collection('/users')
         .add({ 
           'email': user.email, 
           'uid': user.uid, 
           'firstname': user.firstname,

1 个答案:

答案 0 :(得分:0)

为了更新Firebase User-displayName。您只需对代码进行一些更改。

制作-var userUpdateInfo = new UserUpdateInfo();函数外部的.then状态变量。 &然后拨打user.updateProfile

按如下所示编辑创建用户代码:

FirebaseAuth.instance.createUserWithEmailAndPassword(email: _email, password: _password)
      .then((user) {
    var  userUpdateInfo = new UserUpdateInfo();
    userUpdateInfo.displayName = _Firstname;  // Pass the value you want as displayName
    user.updateProfile(userUpdateInfo).then((val){  // will Update the User at Firebase Auth
      print('User Display Name Updated.');
    });
  });