Kelas tidak ditentukan 'FirebaseUser'
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
Mulai dari Versi firebase_auth
0.18.0:
Di versi terbaru firebase_auth
, kelas FirebaseUser
diubah menjadi User
, dan kelas AuthResult
diubah 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 currentUser
dan 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 UserUpdateInfo
kelas untuk firebaseUser.updateProfile
metode. 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();
}
Lari
flutter pub get
Kemudian membangun kembali aplikasi Anda.
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;
});
}
}
}
Dalam versi terbaru firebase_auth, kelas FirebaseUser diubah menjadi User , dan kelas AuthResult diubah menjadi UserCredentail . Oleh karena itu, ubah FirebaseUser menjadi Pengguna
Sejak itu firebase_auth 0.18.0
, kelas FirebaseUser
diubah menjadiUser