Flutter 未为“UserCredential”类型定义 getter“uid”

时间:2021-02-18 11:08:36

标签: firebase flutter dart firebase-authentication

您好,我一直在使用 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())});
  }
}

1 个答案:

答案 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 类型,.userUser 类型,uid 是类 {{ 1}}。