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

Flutter中Firebase邮箱密码+用户名认证遇参数过多错误

解决Firebase邮箱密码认证时添加用户名的参数过多错误

你遇到的问题核心是:createUserWithEmailAndPassword方法不支持直接传入additionalUserInfo或自定义用户名参数,这个方法只接受email和password两个必填参数,所以传额外参数会报"too many positional argument"错误。

正确的实现步骤

Firebase邮箱密码注册的流程是先创建用户,再单独设置用户名(或存入数据库),具体代码如下:

  1. 先完成邮箱密码用户创建
final userCredential = await FirebaseAuth.instance.createUserWithEmailAndPassword(
  email: email,
  password: password,
);
  1. 设置用户的显示名称(即用户名)
    如果只是要在Auth用户信息里保存用户名,直接调用updateDisplayName即可:
// 检查用户创建成功后更新显示名称
await userCredential.user?.updateDisplayName(firstName);
  1. 可选:将用户名存入Firestore(推荐)
    如果需要存储更多用户信息,建议把用户名和其他数据存入Firebase Firestore:
if (userCredential.user != null) {
  await FirebaseFirestore.instance
      .collection('users')
      .doc(userCredential.user!.uid)
      .set({
    'username': firstName,
    'email': email,
    'createdAt': DateTime.now(),
  });
}

为什么你的代码会报错

  • createUserWithEmailAndPassword的官方定义里没有additionalUserInfo这个入参,你不能强行添加这个参数。
  • AdditionalUserInfo是Auth返回给你的对象(用来判断是否是新用户等),不是让你作为参数传进去的。

内容的提问来源于stack exchange,提问作者Abemelek Ermias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:32:06