【问题标题】:.uid: The getter 'uid' isn't defined for the type 'UserCredential'. - Flutter, FirebaseAuth.uid:没有为“UserCredential”类型定义吸气剂“uid”。 - 颤振,FirebaseAuth
【发布时间】:2021-02-17 21:19:06
【问题描述】:

我的 .uid 说:getter 'uid' 没有为类型 'UserCredential' 定义。

我的代码:

 import 'package:firebase_auth/firebase_auth.dart';
 
 class AuthService {   final FirebaseAuth _firebaseAuth =
 FirebaseAuth.instance;
 
   Stream<String> get onAuthStateChanged =>
 _firebaseAuth.authStateChanges().map(
         (User user) => user?.uid,
       );
 
   Future<String>
 createUserWithEmailAndPassword(
       String email, String password, String name) async {
     final currentUser = await _firebaseAuth.createUserWithEmailAndPassword(
       email: email,
       password: password,
     );
 
     var updateInfo = UserUpdateInfo();
     await FirebaseAuth.instance.currentUser.updateProfile(displayName:name);
     await FirebaseAuth.instance.currentUser.reload();
     return FirebaseAuth.instance.currentUser.uid;   }
 
 Future<String>
 signInWithEmailAndPassword(
       String email, String password) async {
     return (await _firebaseAuth.signInWithEmailAndPassword(
             email: email, password: password))
         .uid;   }
 
   signOut() {
     return _firebaseAuth.signOut();   } }
 
 class UserUpdateInfo { }

我该如何解决?谢谢!

【问题讨论】:

    标签: firebase flutter firebase-authentication uid


    【解决方案1】:

    signInWithEmailAndPasswordcreateUserWithEmailAndPassword 方法返回一个UserCredential object,它(如错误消息所述)没有uid 属性。要从 UserCredential 获取 UID,请执行 credential.user.uid

    您正在寻找:

    await (_firebaseAuth.signInWithEmailAndPassword(email: email, password: password)).user.uid
    

    或者当分布在两行/语句中时更具可读性:

    var credentials = await _firebaseAuth.signInWithEmailAndPassword(email: email, password: password);
    return credentials.user.uid
    

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 2021-04-14
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 2021-05-21
      • 2021-08-27
      相关资源
      最近更新 更多