类型为'的值;AuthResult';can';不能分配给类型为';FirebaseUser';

类型为'的值;AuthResult';can';不能分配给类型为';FirebaseUser';,firebase,flutter,dart,firebase-authentication,Firebase,Flutter,Dart,Firebase Authentication,我正在使用Firebase google登录选项在我的项目中实现google登录方法,当在我的代码中添加以下行时,它会向我抛出如下错误: A value of type 'AuthResult' can't be assigned to a variable of type 'FirebaseUser' 这是我的密码: final FirebaseAuth\u FirebaseAuth=FirebaseAuth.instance; 最终GoogleSignIn_GoogleSignIn=新Go

我正在使用Firebase google登录选项在我的项目中实现google登录方法,当在我的代码中添加以下行时,它会向我抛出如下错误:

A value of type 'AuthResult' can't be assigned to a variable of type 'FirebaseUser'
这是我的密码:

final FirebaseAuth\u FirebaseAuth=FirebaseAuth.instance;
最终GoogleSignIn_GoogleSignIn=新GoogleSignIn();
未来登录(构建上下文)异步{
Scaffold.of(上下文).showSnackBar(新的SnackBar(
内容:新文本(“登录”),
));
final GoogleSignInAccount googleUser=wait_googlesignin.signIn();
最终GoogleSignInAuthentication googleAuth=等待googleUser.authentication;
final AuthCredential credential=GoogleAuthProvider.getCredential(
accessToken:googleAuth.accessToken,
idToken:googleAuth.idToken,
);
FirebaseUser userDetails=等待\u firebaseAuth.signInWithCredential(credential).user;
ProviderDetails providerInfo=新的ProviderDetails(userDetails.providerId);
列表提供程序数据=新列表();
providerData.add(providerInfo);
UserDetails=newuserdetails(
userDetails.providerId,
userDetails.displayName,
userDetails.photoUrl,
userDetails.email,
providerData,
);
导航器。推(
上下文
新材料路线(
生成器:(上下文)=>新配置文件(详细信息用户:详细信息),
),
);
返回用户详细信息;
}

谁能告诉我问题出在哪里。

方法
firebaseAuth.signInWithCredential(credential)
返回类型为
AuthResult
的值,因此您需要执行以下操作:

AuthResult userDetails = await _firebaseAuth.signInWithCredential(credential);
对于您的代码,另一个更好的选择是,由于
使用凭据登录
返回
AuthResult
,并且类
AuthResult
包含类型为
FirebaseUser
的实例变量
user
,因此您可以执行以下操作:

FirebaseUser userDetails = (await _firebaseAuth.signInWithCredential(credential)).user;
简单解决方案(由类型更改引起):

Firebase最近将其类型“FirebaseUser”(现已折旧)更改为“User”。尝试在代码中重命名相同的名称,这应该是解决方案。在我的例子中,它适用于大多数相同的错误


最佳

当我使用这行代码时,它仍然会向我抛出错误FirebaseUser userDetails=wait _firebaseAuth.signInWithCredential(credential).user;未为类Futurei定义用户。我已更新了我的代码,但仍然相同。请检查它是否应该是这样的
FirebaseUser userDetails=(wait _firebaseAuth.signInWithCredential(credential)).user