以下代码是_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
,但它没有做出任何改变。
任何帮助将不胜感激,
你的代码应该没问题。该问题可能是由于从
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 错误列表。