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_
相关产品推荐
相关产品推荐

