我刚刚在 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/