Flutter中FirebaseAuthException自定义登录注册错误消息不生效问题
问题原因
你代码存在两处核心问题导致自定义错误提示不生效:
- 自定义消息变量未实际使用:你已经根据错误码生成了自定义的
message变量,但弹窗的文本组件仍然传递的是Firebase返回的原生错误信息error.message.toString() - 错误码匹配规则错误:Flutter侧
firebase_auth包返回的FirebaseAuthException错误码为小写短横线分隔格式,你使用的全大写下划线格式是其他平台的规则,无法命中匹配逻辑。
修正方案
第一步:修正错误码映射
你需要替换switch语句中的错误码为Flutter侧对应的值,对应关系如下:
- 原
EMAIL_NOT_FOUND→ 实际user-not-found - 原
EMAIL_EXISTS→ 实际email-already-in-use - 原
INVALID_PASSWORD→ 实际wrong-password
第二步:修改弹窗内容为自定义消息
把CupertinoAlertDialog中content的Text组件参数替换为你定义的message变量。
修正后的核心代码片段
on FirebaseAuthException catch (error) { var message = '发生未知错误。'; // 默认提示文案 switch (error.code) { case 'user-not-found': message = '不存在使用该邮箱注册的用户账号。'; break; case 'email-already-in-use': message = '该邮箱地址已被其他账号占用。'; break; case 'wrong-password': message = '密码无效,请输入正确的密码。'; break; // 可按需补充其他常见错误码 case 'network-request-failed': message = '网络异常,请检查网络连接后重试'; break; case 'invalid-email': message = '请输入有效的邮箱地址'; break; } setState(() { _isLoading = false; }); showDialog( context: context, builder: (context) => CupertinoAlertDialog( title: const Text('发生错误'), content: Text(message), // 这里替换为自定义的message变量 actions: [ TextButton( child: const Text('关闭'), onPressed: () { Navigator.of(context).pop(); }, ), ], ), ); }
内容的提问来源于stack exchange,提问作者supremo
相关产品推荐
相关产品推荐

