我在 Firebase 中收到“给定字符串为空或空”错误

问题描述 投票:0回答:1
LoginButton(
          onPressed: () {
            signUp();
            final user = Profiles(
              id: id.v1(),
              email: email.text.trim(),
              gender: selectedGender == 1 ? 'Erkek' : 'Kadın',
              name: name.text.trim(),
              username: username.text.trim(),
            );

            createUser(user);
          }, // signUp,
        ),

我正在尝试在按下按钮时使用 signUp() 函数在 Firebase 身份验证中注册用户,并使用 createUser() 函数在 Firestore 中注册信息。

  Future signUp() async {
    showDialog(
      barrierDismissible: false,
      context: context,
      builder: (context) => const Center(
        child: CircularProgressIndicator(),
      ),
    );
    try {
      await FirebaseAuth.instance.createUserWithEmailAndPassword(
        email: email.text.trim(),
        password: password.text.trim(),
      );
    } on FirebaseAuthException catch (e) {
      print(e);
    }
    navigatorKey.currentState!.popUntil((route) => route.isFirst);
  }

  Future createUser(Profiles profile) async {
    final docUser = FirebaseFirestore.instance.collection('profiles').doc();
    profile.id = docUser.id;

    final json = profile.toJson();
    await docUser.set(json);
  }

我创建的 Profiles 类。

    class Profiles {
  String id;
  final String name;
  final String username;
  final String gender;
  final String email;

  Profiles(
      {required this.id,
      required this.email,
      required this.gender,
      required this.name,
      required this.username});

  Map<String, dynamic> toJson() => {
        'id': id,
        'name': name,
        'gender': gender,
        'email': email,
        'username': username,
      };

  static Profiles fromJson(Map<String, dynamic> json) => Profiles(
      id: json['id'],
      email: json['email'],
      gender: json['gender'],
      name: json['name'],
      username: json['username']);
}

错误:给定的字符串为空或为空

我已经在 textFormFields 中定义了我所有的 textEditingControls。几个小时前,我没有收到此代码的任何错误,也没有对代码进行任何更改。但是现在我收到了这个错误。

flutter firebase dart google-cloud-firestore firebase-authentication
1个回答
0
投票

根据你的代码和错误(空或空字符串),你可以试试这个,

onPressed: () {
  if (name.text.trim().isEmpty || username.text.trim().isEmpty || email.text.trim().isEmpty) {
    print("One or more fields are empty");
    return;
  }

  signUp();
  final user = Profiles(
    id: id.v1(),
    email: email.text.trim(),
    gender: selectedGender == 1 ? 'Erkek' : 'Kadın',
    name: name.text.trim(),
    username: username.text.trim(),
  );

  createUser(user);
},

另外,注册是一个异步函数,所以你应该像这样更新你的代码,

LoginButton(
  onPressed: () async {
    await signUp();
    final user = Profiles(
      id: id.v1(),
      email: email.text.trim(),
      gender: selectedGender == 1 ? 'Erkek' : 'Kadın',
      name: name.text.trim(),
      username: username.text.trim(),
    );
    await createUser(user);
  },
),
© www.soinside.com 2019 - 2024. All rights reserved.