คลาสที่ไม่ได้กำหนด "FirebaseUser"

Aug 19 2020

ฉันยังใหม่กับ Flutter ฉันมีปัญหากับFirebase Auth / Google Auth FirebaseUserไม่ได้กำหนดรหัสสินค้า:

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

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

คำตอบ

37 PeterHaddad Aug 19 2020 at 14:51

เริ่มตั้งแต่เวอร์ชันfirebase_auth0.18.0:

ในรุ่นใหม่ล่าสุดของfirebase_authชั้นFirebaseUserก็เปลี่ยนไปUserและชั้นก็เปลี่ยนไปAuthResult UserCredentailดังนั้นเปลี่ยนรหัสของคุณเป็นดังต่อไปนี้:

    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 เปลี่ยนไปเป็น User

AuthResult เปลี่ยนไปเป็น UserCredential

GoogleAuthProvider.getCredential() เปลี่ยนไปเป็น GoogleAuthProvider.credential()


onAuthStateChanged ซึ่งแจ้งเกี่ยวกับการเปลี่ยนแปลงสถานะการลงชื่อเข้าใช้ของผู้ใช้ถูกแทนที่ด้วย authStateChanges()

currentUser()ซึ่งเป็นวิธีการที่จะดึงเข้าสู่ระบบในปัจจุบันผู้ใช้ถูกแทนที่ด้วยทรัพย์สินและผลตอบแทนที่ไม่เป็นcurrentUserFuture<FirebaseUser>

ตัวอย่างสองวิธีข้างต้น:

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

และ:

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

การเลิกใช้UserUpdateInfoคลาสสำหรับfirebaseUser.updateProfileเมธอด ตัวอย่าง:

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

ตอนนี้

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

วิ่ง

flutter pub get

จากนั้นสร้างแอปของคุณใหม่

1 PrathamSarankar Sep 17 2020 at 02:14

นี่อาจเป็นฟังก์ชั่นการลงชื่อเข้าใช้ของคุณด้วยอีเมลและรหัสผ่าน ณ เดือนกันยายน 2020 แอพ Initialze เป็นวิธีการใหม่ที่เราต้องโทรอย่างน้อยหนึ่งครั้งก่อนที่เราจะใช้วิธีการ firebase อื่น

 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

ในรุ่นใหม่ล่าสุดของ firebase_auth ชั้นFirebaseUserได้เปลี่ยนไปเป็นผู้ใช้และชั้นAuthResultก็เปลี่ยนไปUserCredentail ดังนั้นจึงเปลี่ยนFirebaseUserเป็นUser

ChamodDissanayake Feb 04 2021 at 21:11

ตั้งแต่firebase_auth 0.18.0นั้นมาชั้นเรียนFirebaseUserจึงเปลี่ยนเป็นUser