Undefinierte Klasse „FirebaseUser“

Aug 19 2020

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

37 PeterHaddad Aug 19 2020 at 14:51

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();
}
1 sleepingkit Aug 19 2020 at 14:50

Laufen

flutter pub get

Erstellen Sie dann Ihre App neu .

1 PrathamSarankar Sep 17 2020 at 02:14

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;
        });
      }
    }
  }
1 Maann Oct 28 2020 at 13:34

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

ChamodDissanayake Feb 04 2021 at 21:11

Seitdem firebase_auth 0.18.0wurde die Klasse FirebaseUserin geändertUser