Undefined class 'FirebaseUser'

后端 未结 4 1619
野趣味
野趣味 2020-11-22 10:06

I\'m new to Flutter. I have an Issue with Firebase Auth/ Google Auth The FirebaseUser is not defined Code:

FirebaseAuth _aut         


        
相关标签:
4条回答
  • 2020-11-22 10:31

    Starting from Version firebase_auth 0.18.0:

    In the newest version of firebase_auth, the class FirebaseUser was changed to User, and the class AuthResult was changed to UserCredentail. Therefore change your code to the following:

        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 changed to User

    AuthResult changed to UserCredential

    GoogleAuthProvider.getCredential() changed to GoogleAuthProvider.credential()


    onAuthStateChanged which notifies about changes to the user's sign-in state was replaced with authStateChanges()

    currentUser() which is a method to retrieve the currently logged in user, was replaced with the property currentUser and it no longer returns a Future<FirebaseUser>.

    Example of the above two methods:

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

    And:

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

    Deprecation of UserUpdateInfo class for firebaseUser.updateProfile method. Example:

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

    now

    import 'package:firebase_auth/firebase_auth.dart' as firebaseAuth;
    Future updateName(String name, auth.User firebaseUser) async {
      firebaseUser.updateProfile(displayName: name);
      await firebaseUser.reload();
    }
    
    0 讨论(0)
  • 2020-11-22 10:35

    This can be your signin function with email and password as of Sept 2020.Initialze app is a new introduced method we must at least call once before we use any other firebase methods.

     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;
            });
          }
        }
      }
    
    0 讨论(0)
  • 2020-11-22 10:47

    Run

    flutter pub get
    

    Then rebuild your app.

    0 讨论(0)
  • 2020-11-22 10:55

    In the newest version of firebase_auth, the class FirebaseUser was changed to User, and the class AuthResult was changed to UserCredentail. Therefore change FirebaseUser to User

    0 讨论(0)
提交回复
热议问题