使用当前用户在 Flutter App 中更新 Firebase 时出现问题

Alm*_*ren 2 firebase firebase-authentication flutter

我刚刚在 Flutter 应用程序中更新了 Google Firebase Auth,因为我遇到了一些编写的 SDK 错误,但现在我得到了

Error: 'currentUser' isn't a function or method and can't be invoked.
    var user = await _firebaseAuth.currentUser(); 
Run Code Online (Sandbox Code Playgroud)

我查看了迁移指南并了解到currentUser()现在通过 currentUser 获取器同步。但我不确定我现在应该如何更改我的代码来解决这个问题。

我的代码

 class Auth implements BaseAuth {
  final auth.FirebaseAuth _firebaseAuth = auth.FirebaseAuth.instance;

  @override
  Future<String> signIn(String email, String password) async {
    var result = await _firebaseAuth.signInWithEmailAndPassword(
        email: email, password: password);
    var user = result.user;
    return user.uid;
  }

  @override
  Future<String> signUp(
      String email, String password, String name, String company) async {
    final userReference = FirebaseDatabase.instance.reference().child('users');
    var result = await _firebaseAuth.createUserWithEmailAndPassword(
        email: email, password: password);
    var user = result.user;
    await userReference
        .child(user.uid)
        .set(User(user.uid, email, name, company).toJson());
    return user.uid;
  }

  @override
  Future<auth.User> getCurrentUser() async {
    var user = await _firebaseAuth.currentUser();
    return user;
  }

  @override
  Future<void> signOut() async {
    return _firebaseAuth.signOut();
  }

  @override
  Future<void> sendEmailVerification() async {
    var user = await _firebaseAuth.currentUser();
    await user.sendEmailVerification();
  }

  @override
  Future<void> resetPassword(String email) async =>
      await _firebaseAuth.sendPasswordResetEmail(email: email);

  @override
  Future<bool> isEmailVerified() async {
    var user = await _firebaseAuth.currentUser();
    return user.isEmailVerified;
  }
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 8

看起来您使用的是带有过时代码的最新版本的 FlutterFire 库。

在以前版本的库中,currentUser()是一种方法,您必须这样做await。在库的最新版本中,它是一个属性,您不再需要等待它的结果。

所以

var user = _firebaseAuth.currentUser;
Run Code Online (Sandbox Code Playgroud)

另请参阅有关在 Flutter 应用程序中使用 Firebase 身份验证的文档,特别是有关监控身份验证状态的部分,因为它提供了一种侦听身份验证状态更新的方法。