Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何:在注册/创建时设置Firebase用户的配置文件信息?(颤振腹板)_Firebase_Flutter_Dart_Flutter Web - Fatal编程技术网

如何:在注册/创建时设置Firebase用户的配置文件信息?(颤振腹板)

如何:在注册/创建时设置Firebase用户的配置文件信息?(颤振腹板),firebase,flutter,dart,flutter-web,Firebase,Flutter,Dart,Flutter Web,如何在创建用户帐户的同时设置用户的显示名 我正在使用createUserWithEmailAndPassword方法,并试图从同一表单中的3个不同TextForm字段获取信息 下面是一个非常简单的例子,我正在尝试做什么。。。希望有人能从中提供帮助 谢谢 这是我的注册方法: import 'package:firebase_auth/firebase_auth.dart'; class AuthService { FirebaseAuth auth = FirebaseAuth.instan

如何在创建用户帐户的同时设置用户的显示名

我正在使用createUserWithEmailAndPassword方法,并试图从同一表单中的3个不同TextForm字段获取信息

下面是一个非常简单的例子,我正在尝试做什么。。。希望有人能从中提供帮助

谢谢

这是我的注册方法:

import 'package:firebase_auth/firebase_auth.dart';

class AuthService {
  FirebaseAuth auth = FirebaseAuth.instance;

  //Create user with email and password (+ displayName)
  signUp({String email, String password, String name}) async {
    await FirebaseAuth.instance
        .createUserWithEmailAndPassword(email: email, password: password);


        // I'd like to create/update the new user's displayName here, using the String value (name) being passed into this function.



  }
}
这是数据来源的一个示例:

class SignUpForm extends StatelessWidget {
  final GlobalKey<FormState> _formKey = GlobalKey();

  String name;
  String email;
  String password;

  TextEditingController nameController;
  TextEditingController emailController;
  TextEditingController passwordController;

  submit(){
    AuthService().signUp(password: 'password', email: email, name: name);
  }

  @override
  Widget build(BuildContext context) {
    return Form(
      key: _formKey,
      child: Column(
        children: <Widget>[
          TextFormField(
            controller: nameController,
            onChanged: (value) {
              name = value;
            },
          ),
          TextFormField(
            controller: emailController,
            onChanged: (value) {
              email = value;
            },
          ),
          TextFormField(
            controller: passwordController,
            onChanged: (value) {
              password = value;
            },
          ),
        ],
      ),
    );
  }
}

用户对象从createUserWithEmailAndPassword函数的承诺中返回,然后您可以通过向firebase发出进一步的请求,立即更新displayName

 await FirebaseAuth.instance.createUserWithEmailAndPassword(email: email, password: password)
          .then((user){
    var userUpdateInfo = new UserUpdateInfo(); //create user update object
    userUpdateInfo.displayName = "John Doe"
    await firebaseAuth.updateProfile(userUpdateInfo); //update to firebase
    await user.reload(); //reload  user data
})
有关UserUpdateInfo类的更多信息,请单击此处:

您可能还想在firebase github存储库上查看示例应用程序。我已链接到与您想要实现的目标相关的文件和行:

编辑

最终工作代码:

class AuthService {
FirebaseAuth auth = FirebaseAuth.instance;

signUp({String email, String password, String name}) async {
await FirebaseAuth.instance
.createUserWithEmailAndPassword(email: email, password: password)
.then(
(value) async {
var userUpdateInfo = new UserUpdateInfo(); //create user update object
userUpdateInfo.displayName = "John Doe";
await value.user.updateProfile(userUpdateInfo); //update to firebase
await value.user.reload();

print('displayname= ${userUpdateInfo.displayName}');
},
);
}
} 

用户对象从createUserWithEmailAndPassword函数的承诺中返回,然后您可以通过向firebase发出进一步的请求,立即更新displayName

 await FirebaseAuth.instance.createUserWithEmailAndPassword(email: email, password: password)
          .then((user){
    var userUpdateInfo = new UserUpdateInfo(); //create user update object
    userUpdateInfo.displayName = "John Doe"
    await firebaseAuth.updateProfile(userUpdateInfo); //update to firebase
    await user.reload(); //reload  user data
})
有关UserUpdateInfo类的更多信息,请单击此处:

您可能还想在firebase github存储库上查看示例应用程序。我已链接到与您想要实现的目标相关的文件和行:

编辑

最终工作代码:

class AuthService {
FirebaseAuth auth = FirebaseAuth.instance;

signUp({String email, String password, String name}) async {
await FirebaseAuth.instance
.createUserWithEmailAndPassword(email: email, password: password)
.then(
(value) async {
var userUpdateInfo = new UserUpdateInfo(); //create user update object
userUpdateInfo.displayName = "John Doe";
await value.user.updateProfile(userUpdateInfo); //update to firebase
await value.user.reload();

print('displayname= ${userUpdateInfo.displayName}');
},
);
}
} 


谢谢,我试试看!不客气。尽管请记住,如果您仅使用电子邮件和密码创建帐户,那么displayName将尚未保存到Firebase。另一方面,如果你正在使用谷歌注册,这些信息将是可用的,因为谷歌已经掌握了这些信息;您从用户处收集了哪些数据;也许,分享你的一些代码。这会有很大帮助。我看到有人否决了你的问题。我认为这有点不公平,因为你是新会员。如果您添加一些代码摘录和一些关于您试图实现的目标的更多信息,这个问题可能会获得一些支持票。您好,我只是尝试在创建带有电子邮件和密码的Firebase用户的同时创建/更新用户的displayName。。。我会用一些代码更新我的问题。好的,谢谢你的澄清。在这种情况下,您需要在收到用户对象后立即向firebase发送第二个请求。第二个请求将在创建用户后立即执行对displayName的更新。我会为你更新我的答案。谢谢,我会尝试一下!不客气。尽管请记住,如果您仅使用电子邮件和密码创建帐户,那么displayName将尚未保存到Firebase。另一方面,如果你正在使用谷歌注册,这些信息将是可用的,因为谷歌已经掌握了这些信息;您从用户处收集了哪些数据;也许,分享你的一些代码。这会有很大帮助。我看到有人否决了你的问题。我认为这有点不公平,因为你是新会员。如果您添加一些代码摘录和一些关于您试图实现的目标的更多信息,这个问题可能会获得一些支持票。您好,我只是尝试在创建带有电子邮件和密码的Firebase用户的同时创建/更新用户的displayName。。。我会用一些代码更新我的问题。好的,谢谢你的澄清。在这种情况下,您需要在收到用户对象后立即向firebase发送第二个请求。第二个请求将在创建用户后立即执行对displayName的更新。我会为你更新我的答案。谢谢,我会尝试一下!嗨,伙计,我尝试了这个,即使是硬编码显示名,我仍然得到用户名是:Null抱歉,尝试添加在更新前等待配置文件我会更新答案嗨,伙计,这对你有用吗?我还没拿到。谢谢,我试试看!嗨,伙计,我尝试了这个,即使是硬编码显示名,我仍然得到用户名是:Null抱歉,尝试添加在更新前等待配置文件我会更新答案嗨,伙计,这对你有用吗?我还是在变零