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

Flutter集成Firebase Auth报错:UserCredential类型未定义getter 'uid'

问题原因及修复方案

错误1:The getter 'uid' isn't defined for the type 'UserCredential'

  • 原因:createUserWithEmailAndPassword 方法返回的 UserCredential 类型本身不包含 uid 属性,uid 是挂载在 UserCredential 下的 User 对象上的。
  • 修复方式:将 String uid = user.uid; 修改为 String uid = user.user!.uid;,注册成功场景下 user 字段必然不为空,用 ! 强判定即可。

错误2:Undefined name 'uid'

  • 原因:定义 addUser 方法时,传入的用户id参数命名为 id,但方法内部调用时误用了不存在的 uid 变量。
  • 修复方式:将 base_user.child(uid).set(map); 修改为 base_user.child(id).set(map); 即可。

修正后的完整代码

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_database/firebase_database.dart';

class FirebaseHelper {

//Authentification
final auth = FirebaseAuth.instance;

Future<UserCredential> handleSignIn(String mail, String password) async{
 final UserCredential user = await auth.signInWithEmailAndPassword(email: mail, password: password);
 return user;
}

Future<UserCredential> handleCreate(String mail, String password, String prenom, String nom) async{
 final UserCredential user = await FirebaseAuth.instance.createUserWithEmailAndPassword(email: mail, password: password);
 // 修复点1:从User对象中获取uid
 String uid = user.user!.uid;
 Map<String, String> map = {
   "prenom" : prenom,
   "nom" : nom,
 };
 addUser(uid, map);
 return user;
}

//database

static final base = FirebaseDatabase.instance.reference();
// ignore: non_constant_identifier_names
final base_user = base.child("users");

addUser(String id, Map map){
 // 修复点2:使用参数传入的id
 base_user.child(id).set(map);
}

}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 13:06:06