Tanımsız 'FirebaseUser' sınıfı
Flutter'da yeniyim. Birlikte Sorun var Firebase Auth / Google Kimlik Doğrulama FirebaseUser Kodu tanımlanmadı:
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
AuthResult ile de aynı sorunla karşılaşıyorum
final AuthResult authResult = await _auth.signInWithCredential(credential);
Yanıtlar
Sürüm firebase_auth0.18.0'dan başlayarak :
Uygulamasının en yeni sürümünde firebase_auth, sınıf FirebaseUserolarak değiştirildi Userve sınıf AuthResultolarak değiştirildi UserCredentail. Bu nedenle, kodunuzu şu şekilde değiştirin:
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 olarak değiştirildi User
AuthResult olarak değiştirildi UserCredential
GoogleAuthProvider.getCredential() olarak değiştirildi GoogleAuthProvider.credential()
onAuthStateChanged kullanıcının oturum açma durumundaki değişiklikleri bildiren, ile değiştirildi authStateChanges()
currentUser()o anda oturum açmış olan kullanıcıyı almak için bir yöntem olan, özelliği ile değiştirilmiştir currentUserve artık bir Future<FirebaseUser>.
Yukarıdaki iki yönteme örnek:
FirebaseAuth.instance.authStateChanges().listen((event) {
print(event.email);
});
Ve:
var user = FirebaseAuth.instance.currentUser;
print(user.uid);
Yöntem UserUpdateInfoiçin sınıfın kullanımdan kaldırılması firebaseUser.updateProfile. Misal:
Future updateName(String name, FirebaseUser user) async {
var userUpdateInfo = new UserUpdateInfo();
userUpdateInfo.displayName = name;
await user.updateProfile(userUpdateInfo);
await user.reload();
}
şimdi
import 'package:firebase_auth/firebase_auth.dart' as firebaseAuth;
Future updateName(String name, auth.User firebaseUser) async {
firebaseUser.updateProfile(displayName: name);
await firebaseUser.reload();
}
Çalıştırmak
flutter pub get
Ardından uygulamanızı yeniden oluşturun .
Bu, Eylül 2020 itibariyle e-posta ve şifre ile oturum açma işleviniz olabilir. Uygulamayı başlat, başka bir firebase yöntemini kullanmadan önce en az bir kez aramamız gereken yeni bir yöntemdir.
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;
});
}
}
}
Firebase_auth en yeni sürümünde, sınıf FirebaseUser olarak değiştirildi Kullanıcı ve sınıf AuthResult değiştirildi UserCredentail . Bu nedenle değiştirmek FirebaseUser için Kullanıcı
O zamandan beri firebase_auth 0.18.0, sınıf FirebaseUserşu şekilde değiştirildi:User