您好,我一直在使用 flutter 开发 firebase 实时数据库,我想创建一个带有电子邮件和密码的新用户,但是当我想获得 uid 时,它显示了标题,有人可以帮忙吗? ,我不知道怎么了 这是代码:
Future validateForm() async {
FormState formState = _formKey.currentState;
if (formState.validate()) {
formState.reset();
User user = firebaseAuth.currentUser;
if (user == null) {
firebaseAuth
.createUserWithEmailAndPassword(
email: _emailTextController.text,
password: _passwordTextController.text)
.then((user) => {
_userServices.createUser(
{
"username": _nameTextController.text,
"email": _emailTextController.text,
"userId": user.uid,
"gender": gender,
}
)
}).catchError((err) => {print(err.toString())});
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (context) => HomePage()));
}
}
}
这是我的 user.dart :
import 'package:firebase_database/firebase_database.dart';
class UserServices{
FirebaseDatabase _database = FirebaseDatabase.instance;
String ref = "users";
createUser(Map value){
_database.reference().child(ref).push().set(
value
).catchError((e) => { print(e.toString())});
}
}
答案 0 :(得分:2)
createUserWithEmailAndPassword()
返回一个 Future<UserCredential>
。在类 UserCredential
中有一个名为 user
的属性,它检索当前创建的用户并返回类型 User
。因此,您需要执行以下操作:
firebaseAuth
.createUserWithEmailAndPassword(
email: _emailTextController.text,
password: _passwordTextController.text)
.then((user) => {
_userServices.createUser(
{
"username": _nameTextController.text,
"email": _emailTextController.text,
"userId": user.user.uid,
"gender": gender,
}
回调中的 user
参数是 UserCredential
类型,.user
是 User
类型,uid
是类 {{ 1}}。