如何解决无法将类型“ AuthResult”的值分配给“ FirebaseUser”类型的变量

时间:2019-09-08 10:27:08

标签: android firebase flutter firebase-authentication

我试图将firebaseuser形式更改为authresults

import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
abstract class AuthImplementaion {

}
class Auth implements AuthImplementaion {
  final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
  Future<String> SignIn(String _email, String _password) async{
    FirebaseUser user = await _firebaseAuth.signInWithEmailAndPassword(email: _email, password: _password);
    return user.uid;
  }
}

消息:无法将类型“ AuthResult”的值分配给“ FirebaseUser”类型的变量。尝试更改变量的类型,或将右侧类型强制转换为“ FirebaseUser”

2 个答案:

答案 0 :(得分:1)

_firebaseAuth.signInWithEmailAndPassword(email: _email, password: _password)返回一个AuthResult,就像错误消息中提到的一样。但是AuthResult提供了一个user的{​​{1}}。

因此,您还必须致电FirebaseUser

.user

答案 1 :(得分:0)

将此分配给AuthResult变量,该变量又包含该用户,而该用户包含uid。

AuthResult authresult已包含具有uid的用户。 而不是返回user.uid 返回authResult.user.uid;

class Auth implements AuthImplementaion {
  final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
  Future<String> SignIn(String _email, String _password) async{
    AuthResult authResult = await _firebaseAuth.signInWithEmailAndPassword(email: _email, password: _password);
    return authResult.user.uid;
  }
}