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

Firebase注册报错firebase_auth/unknown: null 如何存储用户额外信息

报错排查

你遇到的firebase_auth/unknown: null错误由两个代码问题共同导致:

  1. 邮箱输入框未绑定值的监听回调
    你代码里的邮箱TextFormField只有校验逻辑,没有添加onChanged回调把输入的内容赋值给你声明的email变量,调用注册接口时传的邮箱参数是null,直接触发未知错误。修复方法如下:
TextFormField(
  validator: (value) {
    if (value == null || value.isEmpty) {
      return '*Email Address Required';
    }
    return null;
  },
  // 新增下面这行赋值逻辑
  onChanged: (value) {
    email = value;
  },
),
  1. 注册逻辑未放到表单校验判断内
    当前你的注册try/catch代码块写在了if (_formKey.currentState.validate())判断外面,就算表单校验不通过也会触发注册逻辑,传空参数必然报错。需要把整个注册逻辑移到校验判断的代码块内,同时记得把加载状态关闭的逻辑也放到异常捕获里,避免报错后加载动画一直显示:
onPressed: () async {
  if (_formKey.currentState.validate()) {
    setState(() {
      showSpinner = true;
    });
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(content: Text('Processing Data')),
    );
    try {
      final newUser = await _auth.createUserWithEmailAndPassword(
          email: email, password: password);
      if(newUser!=null){
        Navigator.pushNamed(context, MainEmployeeScreen.id);
        print(name);
      }
      setState(() {
        showSpinner = false;
      });
    }
    catch(e){
      print(e);
      setState(() {
        showSpinner = false;
      });
    }
  }
}

存储自定义用户信息方法

Firebase Auth仅存储邮箱、密码哈希、用户uid这类核心账号凭证,年龄、性别这类自定义字段需要搭配Firebase Cloud Firestore存储,操作步骤如下:

  1. 先在Firebase控制台开通Cloud Firestore,配置安全规则,保证用户仅能读写自己的用户数据:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}
  1. 注册成功拿到用户uid后,往users集合中写入对应用户的自定义字段:
if(newUser!=null){
  // 写入自定义用户信息
  await FirebaseFirestore.instance.collection('users').doc(newUser.user.uid).set({
    'name': name,
    'age': 你收集到的年龄变量,
    'gender': 你收集到的性别变量,
    'email': email,
    'createTime': FieldValue.serverTimestamp(),
  });
  Navigator.pushNamed(context, MainEmployeeScreen.id);
}
  1. 后续用户登录后,直接用当前登录用户的uid查询users集合下的对应文档,就能拿到所有自定义信息。

内容的提问来源于stack exchange,提问作者Usama Bin Tahir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:24:00