【问题标题】:Issue with 'FirebaseUser' Future“FirebaseUser”未来的问题
【发布时间】:2020-12-31 18:05:54
【问题描述】:

我在一个新项目中使用 Firebase 实现 Google Sign in 时遇到问题,说表达式无法计算为函数。在过去的一年中,该代码已在我的其他项目中运行。这是我的代码:

class FirebaseAuthService {
  final FirebaseAuth _firebaseAuth;
  final GoogleSignIn _googleSignIn;

  FirebaseAuthService({FirebaseAuth firebaseAuth, GoogleSignIn googleSignin})
      : _firebaseAuth = firebaseAuth ?? FirebaseAuth.instance,
        _googleSignIn = googleSignin ?? GoogleSignIn();

  Account _userFromFirebase(User user) {
    if (user == null) {
      return null;
    }
    return Account(
      uid: user.uid,
      email: user.email,
      displayName: user.displayName,
      photoUrl: user.photoURL,
    );
  }

  Stream<Account> get onAuthStateChanged {
    return _firebaseAuth.onAuthStateChanged.map(_userFromFirebase);
  }

  Future<Account> signInAnonymously() async {
    final authResult = await _firebaseAuth.signInAnonymously();
    return _userFromFirebase(authResult.user);
  }

  Future<Account> signInWithGoogle() async {
    final googleUser = await _googleSignIn.signIn();
    final googleAuth = await googleUser.authentication;
    final credential = GoogleAuthProvider.credential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );
    final authResult = await _firebaseAuth.signInWithCredential(credential);
    return _userFromFirebase(authResult.user);
  }

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

  Future<Account> currentUser() async {// The Issue is here in the Future<>
    final user = await _firebaseAuth.currentUser();
    return _userFromFirebase(user);
  }
}

【问题讨论】:

  • 请编辑问题以更清楚地指出问题所在,以及完整的错误消息。

标签: firebase flutter firebase-authentication google-signin


【解决方案1】:

在最新版本的firebase_auth(0.18.0+1)中,没有currentUser函数,也没有返回Future。对许多 FlutterFire 软件包进行了重大的重大更改,这些更改可能已经改变了这种语法,您可能在没有查看这些重大更改的更改日志的情况下更新了您的软件包。

获取currentUser 现在已更改为getter,不再返回Future

currentUser 函数应修改为:

Account currentUser() {
  final user = _firebaseAuth.currentUser;
  return _userFromFirebase(user);
}

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 2020-12-31
    • 2018-03-01
    • 2017-05-03
    • 2017-04-05
    • 2020-06-24
    相关资源
    最近更新 更多