Clase no definida 'FirebaseUser'

Resuelto AbdullahTh asked hace 54 años • 6 respuestas

Soy nuevo en Flutter. Tengo un problema con Firebase Auth/Google Auth. El FirebaseUser no está definido Código:

FirebaseAuth _auth = FirebaseAuth.instance;
GoogleSignIn googleSignIn = GoogleSignIn();

Future<FirebaseUser> currentUser() async { // The Issue is here in the Future<>
  final GoogleSignInAccount account = await googleSignIn.signIn();
  final GoogleSignInAuthentication authentication =
      await account.authentication;

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

  final AuthResult authResult = await _auth.signInWithCredential(credential);
  final FirebaseUser user = authResult.user; // and here as I can't define this FirebaseUser object to return

  return user;
}

Pubspec.yml

dependencies:
  flutter:
    sdk: flutter


  cupertino_icons: ^0.1.3
  firebase_auth: ^0.18.0
  location: ^3.0.2
  page_transition: ^1.1.6
  google_sign_in: ^4.5.1
  flutter_facebook_login: ^3.0.0
  firebase_database: ^4.0.0

También me enfrento al mismo problema con AuthResult

final AuthResult authResult = await _auth.signInWithCredential(credential);
AbdullahTh avatar Jan 01 '70 08:01 AbdullahTh
Aceptado

A partir de la versión firebase_auth0.18.0:

En la versión más reciente de firebase_auth, la clase FirebaseUserse cambió a User, y la clase AuthResultse cambió a UserCredential. Por lo tanto cambie su código a lo siguiente:

    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;
    }

FirebaseUsercambiado aUser

AuthResultcambiado aUserCredential

GoogleAuthProvider.getCredential()cambiado aGoogleAuthProvider.credential()


onAuthStateChangedque notifica sobre cambios en el estado de inicio de sesión del usuario fue reemplazado porauthStateChanges()

currentUser()que es un método para recuperar el usuario actualmente conectado, fue reemplazado por la propiedad currentUsery ya no devuelve un archivo Future<FirebaseUser>.

Ejemplo de los dos métodos anteriores:

FirebaseAuth.instance.authStateChanges().listen((event) {
   print(event.email);
});

Y:

var user = FirebaseAuth.instance.currentUser;
print(user.uid);

Desuso de UserUpdateInfoclase para firebaseUser.updateProfilemétodo. Ejemplo:

Future updateName(String name, FirebaseUser user) async {
  var userUpdateInfo = new UserUpdateInfo();
  userUpdateInfo.displayName = name;
  await user.updateProfile(userUpdateInfo);
  await user.reload(); 
}

ahora

import 'package:firebase_auth/firebase_auth.dart' as firebaseAuth;
Future updateName(String name, auth.User firebaseUser) async {
  firebaseUser.updateProfile(displayName: name);
  await firebaseUser.reload();
}
Peter Haddad avatar Aug 19 '2020 07:08 Peter Haddad

Desde entonces firebase_auth 0.18.0, la clase FirebaseUserfue cambiada aUser

User avatar Feb 04 '2021 14:02 User