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

标签 firebase flutter firebase-authentication

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

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

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

我的代码

 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;
  }
}

最佳答案

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

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

所以

var user = _firebaseAuth.currentUser;

另请参阅 using Firebase Authentication in your Flutter app 上的文档,特别是关于 monitoring authentication state 的部分因为它提供了一种监听身份验证状态更新的方法。

关于firebase - 使用当前用户更新 Flutter App 中的 Firebase 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63684365/

相关文章:

ios - 将 Firebase 文档计数返回为表格行计数

Angular 通用 Firebase : no provider for InjectionToken MODULE_MAP

Flutter:找到这个候选人,但参数不匹配

android - 如何为图标勾勒颜色,但您也可以填充颜色 [Flutter]

javascript - 如何使用 AngularFire 调用 Firebase JS 方法

java - 通过 Firebase 在 Android 应用程序中进行身份验证 : Get the user’s first and last name

session - Firebase 3.x - token / session 过期

android - 如何摆脱自动生成的 ID firebase 数据库?

node.js - Firebase web 9.0.1 错误包路径。没有导出

flutter - 强制容器内的小部件将其自身限制为一行