You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中FirebaseAuthException自定义登录注册错误消息不生效问题

问题原因

你代码存在两处核心问题导致自定义错误提示不生效:

  1. 自定义消息变量未实际使用:你已经根据错误码生成了自定义的message变量,但弹窗的文本组件仍然传递的是Firebase返回的原生错误信息error.message.toString()
  2. 错误码匹配规则错误: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:48:03