'FirebaseUser' 未来的问题
Issue with 'FirebaseUser' Future
我在实施 Google 在新项目中使用 Firebase 登录时遇到问题,说表达式未计算为函数。在过去的一年中,该代码在我的其他项目中发挥了作用。这是我的代码:
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_auth
(0.18.0+1)中,没有currentUser
功能,也没有return一个Future
。对许多 FlutterFire 包进行了重大 重大 更改,这些更改可能已经更改了此语法,您可能没有查看这些重大更改的更改日志就更新了您的包。
获取 currentUser
现在已更改为 getter,不再是 return Future
。
currentUser
函数应修改为:
Account currentUser() {
final user = _firebaseAuth.currentUser;
return _userFromFirebase(user);
}
我在实施 Google 在新项目中使用 Firebase 登录时遇到问题,说表达式未计算为函数。在过去的一年中,该代码在我的其他项目中发挥了作用。这是我的代码:
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_auth
(0.18.0+1)中,没有currentUser
功能,也没有return一个Future
。对许多 FlutterFire 包进行了重大 重大 更改,这些更改可能已经更改了此语法,您可能没有查看这些重大更改的更改日志就更新了您的包。
获取 currentUser
现在已更改为 getter,不再是 return Future
。
currentUser
函数应修改为:
Account currentUser() {
final user = _firebaseAuth.currentUser;
return _userFromFirebase(user);
}