与'有关的问题;FirebaseUser';未来
在一个新项目中,我在使用Firebase实现Google登录时遇到了一个问题,即表达式的计算结果不是函数。在过去的一年里,该代码已经在我的其他项目中发挥了作用。这是我的密码:与'有关的问题;FirebaseUser';未来,firebase,flutter,firebase-authentication,google-signin,Firebase,Flutter,Firebase Authentication,Google Signin,在一个新项目中,我在使用Firebase实现Google登录时遇到了一个问题,即表达式的计算结果不是函数。在过去的一年里,该代码已经在我的其他项目中发挥了作用。这是我的密码: class FirebaseAuthService { final FirebaseAuth _firebaseAuth; final GoogleSignIn _googleSignIn; FirebaseAuthService({FirebaseAuth firebaseAuth, GoogleSignI
class FirebaseAuthService {
final FirebaseAuth _firebaseAuth;
final GoogleSignIn _googleSignIn;
FirebaseAuthService({FirebaseAuth firebaseAuth, GoogleSignIn googleSignin})
: _firebaseAuth = firebaseAuth ?? FirebaseAuth.instance,
_googleSignIn = googleSignin ?? GoogleSignIn();
Account _userFromFirebase(User user) {
if (user == null) {
return null;
}
return Account(
uid: user.uid,
email: user.email,
displayName: user.displayName,
photoUrl: user.photoURL,
);
}
Stream<Account> get onAuthStateChanged {
return _firebaseAuth.onAuthStateChanged.map(_userFromFirebase);
}
Future<Account> signInAnonymously() async {
final authResult = await _firebaseAuth.signInAnonymously();
return _userFromFirebase(authResult.user);
}
Future<Account> signInWithGoogle() async {
final googleUser = await _googleSignIn.signIn();
final googleAuth = await googleUser.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final authResult = await _firebaseAuth.signInWithCredential(credential);
return _userFromFirebase(authResult.user);
}
Future<void> signOut() async {
return _firebaseAuth.signOut();
}
Future<Account> currentUser() async {// The Issue is here in the Future<>
final user = await _firebaseAuth.currentUser();
return _userFromFirebase(user);
}
}
类FirebaseAuthService{
最终FirebaseAuth_FirebaseAuth;
最终谷歌签名(googlesign);;
FirebaseAuthService({FirebaseAuth FirebaseAuth,GoogleSignIn GoogleSignIn})
:_firebaseAuth=firebaseAuth??firebaseAuth.instance,
_谷歌签名=谷歌签名??谷歌签名();
帐户\u userFromFirebase(用户){
if(user==null){
返回null;
}
返回帐户(
uid:user.uid,
电子邮件:user.email,
displayName:user.displayName,
photoUrl:user.photoUrl,
);
}
流得到更改{
返回_firebaseAuth.onAuthStateChanged.map(_userFromFirebase);
}
Future name()异步{
final authResult=等待_firebaseAuth.signinanoymously();
返回\u userFromFirebase(authResult.user);
}
未来登录使用Google()异步{
final googleUser=Wait_googleSignIn.signIn();
final googleAuth=等待googleUser.authentication;
最终凭证=GoogleAuthProvider.credential(
accessToken:googleAuth.accessToken,
idToken:googleAuth.idToken,
);
最终身份验证结果=使用凭证(凭证)等待firebaseAuth.Signin;
返回\u userFromFirebase(authResult.user);
}
Future signOut()异步{
返回_firebaseAuth.signOut();
}
Future currentUser()async{//问题在未来
最终用户=等待_firebaseAuth.currentUser();
返回\u userFromFirebase(用户);
}
}
在最新版本的firebase_-auth
(0.18.0+1)中,没有currentUser
功能,并且不会返回未来的。对许多FlatterFire软件包进行了重大的破坏性更改,这些更改可能改变了该语法,您可能在不查看这些破坏性更改的更改日志的情况下更新了软件包
获取现在已更改为getter,不再返回Future
currentUser
功能应修改为以下内容:
Account currentUser(){
最终用户=_firebaseAuth.currentUser;
返回\u userFromFirebase(用户);
}
请编辑问题,以便更清楚地指出问题所在以及完整的错误消息。