未定义的类';FirebaseUser';

未定义的类';FirebaseUser';,firebase,flutter,dart,firebase-authentication,google-authentication,Firebase,Flutter,Dart,Firebase Authentication,Google Authentication,我是个新手。我对Firebase Auth/Google Auth有问题 未定义FirebaseUser 代码: 我在AuthResult中也面临同样的问题 final AuthResult authResult = await _auth.signInWithCredential(credential); 跑 然后重建你的应用程序。从版本firebase\u auth0.18.0开始: 在最新版本的firebase\u auth中,类FirebaseUser更改为User,类AuthResu

我是个新手。我对Firebase Auth/Google Auth有问题 未定义FirebaseUser 代码:

我在AuthResult中也面临同样的问题

final AuthResult authResult = await _auth.signInWithCredential(credential);

然后重建你的应用程序。

从版本
firebase\u auth
0.18.0开始: 在最新版本的
firebase\u auth
中,类
FirebaseUser
更改为
User
,类
AuthResult
更改为
UserCredential
。因此,请将代码更改为以下内容:

    Future<User> currentUser() async {
      final GoogleSignInAccount account = await googleSignIn.signIn();
      final GoogleSignInAuthentication authentication =
          await account.authentication;

      final GoogleAuthCredential credential = GoogleAuthProvider.credential(
          idToken: authentication.idToken,
          accessToken: authentication.accessToken);

      final UserCredential authResult =
          await _auth.signInWithCredential(credential);
      final User user = authResult.user;

      return user;
    }
以及:


firebaseUser.updateProfile
方法的
UserUpdateInfo
类的弃用。 例如:

现在


从2020年9月起,这可以是您的电子邮件和密码登录功能。Initialze应用程序是一种新引入的方法,在使用任何其他firebase方法之前,我们必须至少调用一次

 Future<void> signin() async {
    final formState = _formkey.currentState;
    await Firebase.initializeApp();
    if (formState.validate()) {
      setState(() {
        loading = true;
      });
      formState.save();
      try {
        print(email);
        final User user = (await FirebaseAuth.instance
                .signInWithEmailAndPassword(email: email, password: password))
            .user;
      } catch (e) {
        print(e.message);
        setState(() {
          loading = false;
        });
      }
    }
  }
未来登录()异步{
final formState=_formkey.currentState;
等待Firebase.initializeApp();
if(formState.validate()){
设置状态(){
加载=真;
});
formState.save();
试一试{
打印(电子邮件);
最终用户用户=(等待FirebaseAuth.instance
.使用电子邮件和密码登录(电子邮件:电子邮件,密码:密码))
.用户;
}捕获(e){
打印(电子信息);
设置状态(){
加载=假;
});
}
}
}

在最新版本的firebase_-auth中,类FirebaseUser更改为User,类AuthResult更改为UserCredentail。因此,将FirebaseUser更改为User

firebase\u auth 0.18.0
以来,类
FirebaseUser
更改为
User

您是否在firebase google登录方法中设置了?是的,我正在尝试将google登录添加到我的appWell书面回答中,但是当我试图登录到用户直到他注销时,我得到了一个错误。我请求你,你能回答这个问题吗?我被困在这里,请给我一个方向,因此添加
UserUpdateInfo
的弃用,它现在是
firebaseUser.updateProfile
请编辑答案,我将接受编辑@tiagosanto令人印象深刻的答案。谢谢亲爱的:)谷歌已经更新了更新个人资料的每个属性的代码。例如,如果用户想要更改显示名称,那么代码将类似于
firebaseUser.updateDisplayName(名称)谢谢。
flutter pub get
    Future<User> currentUser() async {
      final GoogleSignInAccount account = await googleSignIn.signIn();
      final GoogleSignInAuthentication authentication =
          await account.authentication;

      final GoogleAuthCredential credential = GoogleAuthProvider.credential(
          idToken: authentication.idToken,
          accessToken: authentication.accessToken);

      final UserCredential authResult =
          await _auth.signInWithCredential(credential);
      final User user = authResult.user;

      return user;
    }
FirebaseAuth.instance.authStateChanges().listen((event) {
   print(event.email);
});
var user = FirebaseAuth.instance.currentUser;
print(user.uid);
Future updateName(String name, FirebaseUser user) async {
  var userUpdateInfo = new UserUpdateInfo();
  userUpdateInfo.displayName = name;
  await user.updateProfile(userUpdateInfo);
  await user.reload(); 
}
import 'package:firebase_auth/firebase_auth.dart' as firebaseAuth;
Future updateName(String name, auth.User firebaseUser) async {
  firebaseUser.updateProfile(displayName: name);
  await firebaseUser.reload();
}
 Future<void> signin() async {
    final formState = _formkey.currentState;
    await Firebase.initializeApp();
    if (formState.validate()) {
      setState(() {
        loading = true;
      });
      formState.save();
      try {
        print(email);
        final User user = (await FirebaseAuth.instance
                .signInWithEmailAndPassword(email: email, password: password))
            .user;
      } catch (e) {
        print(e.message);
        setState(() {
          loading = false;
        });
      }
    }
  }