Clase no definida 'FirebaseUser'
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);
A partir de la versión firebase_auth
0.18.0:
En la versión más reciente de firebase_auth
, la clase FirebaseUser
se cambió a User
, y la clase AuthResult
se 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;
}
FirebaseUser
cambiado aUser
AuthResult
cambiado aUserCredential
GoogleAuthProvider.getCredential()
cambiado aGoogleAuthProvider.credential()
onAuthStateChanged
que 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 currentUser
y 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 UserUpdateInfo
clase para firebaseUser.updateProfile
mé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();
}
Desde entonces firebase_auth 0.18.0
, la clase FirebaseUser
fue cambiada aUser