Undefinierte Klasse „FirebaseUser“
Ich bin neu bei Flutter. Ich habe ein Problem mit Firebase Auth/Google Auth. Der FirebaseUser ist nicht definiert. Code:
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
Ich habe auch das gleiche Problem mit AuthResult
final AuthResult authResult = await _auth.signInWithCredential(credential);
Antworten
Ab Version firebase_auth0.18.0:
In der neuesten Version von firebase_authwurde die Klasse FirebaseUserin Userund die Klasse AuthResultin geändert UserCredentail. Ändern Sie daher Ihren Code wie folgt:
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;
}
FirebaseUsergewechselt zuUser
AuthResultgewechselt zuUserCredential
GoogleAuthProvider.getCredential()gewechselt zuGoogleAuthProvider.credential()
onAuthStateChanged, das über Änderungen am Anmeldestatus des Benutzers benachrichtigt, wurde durch ersetztauthStateChanges()
currentUser()Dies ist eine Methode zum Abrufen des aktuell angemeldeten Benutzers, wurde durch die Eigenschaft ersetzt currentUserund gibt keine Future<FirebaseUser>.
Beispiel für die beiden oben genannten Methoden:
FirebaseAuth.instance.authStateChanges().listen((event) {
print(event.email);
});
Und:
var user = FirebaseAuth.instance.currentUser;
print(user.uid);
Veraltung der UserUpdateInfoKlasse für firebaseUser.updateProfileMethode. Beispiel:
Future updateName(String name, FirebaseUser user) async {
var userUpdateInfo = new UserUpdateInfo();
userUpdateInfo.displayName = name;
await user.updateProfile(userUpdateInfo);
await user.reload();
}
jetzt
import 'package:firebase_auth/firebase_auth.dart' as firebaseAuth;
Future updateName(String name, auth.User firebaseUser) async {
firebaseUser.updateProfile(displayName: name);
await firebaseUser.reload();
}
Laufen
flutter pub get
Erstellen Sie dann Ihre App neu .
Dies kann ab September 2020 Ihre Anmeldefunktion mit E-Mail und Passwort sein. Die Initialisierungs-App ist eine neu eingeführte Methode, die wir mindestens einmal aufrufen müssen, bevor wir andere Firebase-Methoden verwenden.
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;
});
}
}
}
In der neuesten Version von firebase_auth wurde die Klasse FirebaseUser in User und die Klasse AuthResult in UserCredentail geändert . Ändern Sie daher FirebaseUser in User
Seitdem firebase_auth 0.18.0wurde die Klasse FirebaseUserin geändertUser