如何在 VSCode 上的 Flutter+Firebase 中使用 try 和 catch 打印消息?

问题描述 投票:0回答:1

以下代码是_LoginPageState的实现:

  final emailController = TextEditingController();
  final passwordController = TextEditingController();

  void signIn() async{
    // loading circle
    print("SignIn");
    showDialog(
      context: context,
      builder: (context) {
        return const Center(
          child: CircularProgressIndicator(),
        );
      },
    );
    // dealing with incorrect email or password
    try {
      await FirebaseAuth.instance.signInWithEmailAndPassword(
        email: emailController.text,
        password: passwordController.text,
    );
    // topmost component stacked will be popped (opposite of push)
    Navigator.pop(context);
    } on FirebaseAuthException catch (e) {
      Navigator.pop(context);
      if (e.code == 'user-not-found'){
        print('wrong user');
        wrongEmailMessage();
      } else if (e.code == 'wrong-password'){
        print('wrong pass');
        wrongPassMessage();
      }
    }
  }

  void wrongEmailMessage() {
    showDialog(
        context: context,
        builder: (context) {
          return const AlertDialog(
            backgroundColor: Colors.deepPurple,
            title: Center(
              child: Text('Incorrect Email', style: TextStyle(color: Colors.white),),
              ),
          );
        });
  }

我只是复制了 YouTube 视频来练习 Dart/Flutter,但是当我输入错误的电子邮件或密码时,我没有在 try and catch 中收到任何错误消息,例如控制台上的“错误用户”和“错误通行证” 。它显示的只是一个加载圆圈,但 UI 和控制台上没有任何其他内容。控制台显示输出“I/flutter ( 8678): SignIn”,我复制并粘贴了与视频显示的完全相同的代码: https://github.com/mitchkoko/EmailLoginLogout/blob/main/lib/pages/login_page.dart

因此,问题应该出在 try 或我的环境中,但我无法弄清楚。如果我输入正确的电子邮件和密码,程序将正常运行并导航到主页。 我在 VSCode 上使用 Pixel_3a_API...7_x86 android x64 模拟器和调试控制台。我尝试在终端上运行而不调试和

flutter run
,但它没有做出任何改变。

任何帮助将不胜感激,

flutter dart visual-studio-code mobile try-catch
1个回答
0
投票

你的代码应该没问题。该问题可能是由于从

e.code
捕获无效的错误代码。

在您的代码中:

on FirebaseAuthException catch (e) {
      Navigator.pop(context);
      if (e.code == 'user-not-found'){
        print('wrong user');
        wrongEmailMessage();
      } else if (e.code == 'wrong-password'){
        print('wrong pass');
        wrongPassMessage();
      }

您正在专门寻找

user-not-found
wrong-password
的错误代码。但是,您可能会收到不同的错误消息,而不是您的具体
e.code
中捕获的内容。

要调试问题,只需使用

print
语句并查看错误代码:

on FirebaseAuthException catch (e) {
      print('catching, the error code is "${e.code}"'); // --> add a print here
      Navigator.pop(context);
      if (e.code == 'user-not-found') {
        print('wrong user');

您还可以查看 Firebase 管理 API 错误列表

© www.soinside.com 2019 - 2024. All rights reserved.