Kelas tidak ditentukan 'FirebaseUser'

Aug 19 2020

Saya baru mengenal Flutter. Saya memiliki Masalah dengan Firebase Auth / Google Auth . FirebaseUser tidak ditentukan Kode:

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

Saya juga menghadapi masalah yang sama dengan AuthResult

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

Jawaban

37 PeterHaddad Aug 19 2020 at 14:51

Mulai dari Versi firebase_auth0.18.0:

Di versi terbaru firebase_auth, kelas FirebaseUserdiubah menjadi User, dan kelas AuthResultdiubah menjadi UserCredentail. Oleh karena itu, ubah kode Anda menjadi berikut:

    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 diubah menjadi User

AuthResult diubah menjadi UserCredential

GoogleAuthProvider.getCredential() diubah menjadi GoogleAuthProvider.credential()


onAuthStateChanged yang memberi tahu tentang perubahan pada status masuk pengguna diganti dengan authStateChanges()

currentUser()yang merupakan metode untuk mengambil pengguna yang saat ini masuk, diganti dengan properti currentUserdan tidak lagi mengembalikan Future<FirebaseUser>.

Contoh dari dua metode di atas:

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

Dan:

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

Penghentian UserUpdateInfokelas untuk firebaseUser.updateProfilemetode. Contoh:

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

sekarang

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

Lari

flutter pub get

Kemudian membangun kembali aplikasi Anda.

1 PrathamSarankar Sep 17 2020 at 02:14

Ini bisa menjadi fungsi masuk Anda dengan email dan kata sandi mulai Sept 2020. Aplikasi inisialisasi adalah metode baru yang diperkenalkan yang setidaknya harus kita panggil sekali sebelum menggunakan metode firebase lainnya.

 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

Dalam versi terbaru firebase_auth, kelas FirebaseUser diubah menjadi User , dan kelas AuthResult diubah menjadi UserCredentail . Oleh karena itu, ubah FirebaseUser menjadi Pengguna

ChamodDissanayake Feb 04 2021 at 21:11

Sejak itu firebase_auth 0.18.0, kelas FirebaseUserdiubah menjadiUser