我的 flutter firebase 应用总是有同样的错误

my flutter firebase app always have same error

我在 firebase 上制作了一个带有 flutter 和后端的在线商店应用程序,在注册页面中每当点击创建帐户按钮时它都会显示相同的错误,无论我是否将数据放在文本字段中,我真的很困惑关于这个!

错误是

given String is empty or null

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../widgets/custom_button.dart';
import '../widgets/custom_input.dart';
import 'const.dart';
import 'login.dart';

class SingUP extends StatefulWidget {
  SingUP({Key? key}) : super(key: key);

  @override
  State<SingUP> createState() => _SingUPState();
}

class _SingUPState extends State<SingUP> {
  Future<void> advanceAlertDialog(String message) {
    return Get.defaultDialog(
      title: 'Invalid Input',
      content: Text(message),
      actions: [
        ElevatedButton(
          onPressed: () => Get.back(),
          child: Text('OK !'),
        )
      ],
      contentPadding: EdgeInsets.all(15.0),
    );
  }

  Future<String?> signInMethod() async {
    try {
      await FirebaseAuth.instance.createUserWithEmailAndPassword(
          email: takeEmail, password: takePassword);
      return 'ok';
    } on FirebaseAuthException catch (error) {
      if (error.code == 'weak-password') {
        return 'the password is too week';
      } else if (error.code == 'email-already-in-use') {
        return 'The account with this email is already exist !';
      }
      return error.message;
    } catch (error) {
      return error.toString();
    }
  }

  void signIn() async {
    setState(() {
      isLoading = true;
    });
    String? result = await signInMethod();
    if (result != 'ok') {
      advanceAlertDialog(result!);
      setState(() {
        isLoading = false;
      });
    } else {
      setState(() {
        isLoading = false;
      });
      Get.to(LoginPage());
      Get.snackbar('Successful', 'Account Created !',
          backgroundColor: Colors.greenAccent, icon: Icon(Icons.check_circle));
    }
  }

  bool isLoading = false;
  String takeEmail = '';
  String takePassword = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        width: double.infinity,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: [
            Container(
              padding: EdgeInsets.only(top: 50),
              child: Text(
                'Create a New Account !',
                style: Constans.headingTextStyle,
                textAlign: TextAlign.center,
              ),
            ),
            Column(
              children: [
                CustomInput(
                  hintText: 'Enter Your Email ...',
                  onChanged: (value) {
                    takeEmail = value;
                  },
                  checkPassword: false,
                ),
                CustomInput(
                  hintText: 'Enter Your Password ...',
                  onChanged: (value) {
                    takeEmail = value;
                  },
                  checkPassword: true,
                ),
                CustomButton(
                  text: 'Create Account',
                  loading: isLoading,
                  onTap: () {
                    signIn();
                  },
                  mode: false,
                )
              ],
            ),
            CustomButton(
              text: 'Back to Login',
              onTap: () => Get.back(),
              mode: true,
              loading: isLoading,
            )
          ],
        ),
      ),
    );
  }
}

emain和password widgets是一样的takeEmail = value;,把password onChange value改成takePassword = value;,还有到底是哪里报错了。我建议在 signInMethod() 中添加断点以查看 email: takeEmail, password: takePassword(这两个字符串)的输入值,并在 on FirebaseAuthException catch (error) { 之后查看错误是从 firebase 抛出的还是在你的代码。