当我在 rxdart 中调用 currentUser 和 Observable 错误时,FirebaseAuth 抛出错误
FirebaseAuth throws error when I called currentUser and Observable error in rxdart
我创建了一个带有 Google 登录并支持 firestore 的应用程序,最近我将所有依赖项更新为更新版本。这里旧代码有一些问题我不知道是什么问题。
Future<String> getCurrentUser() async {
var user = await _auth.currentUser();
if (user == null) {
return null;
} else {
return user.uid;
}
}
在_auth.currentUser()附近显示错误;错误是 The expression doesn't evaluate to a function, so it can't be invoked.
我已经搜索过了,但没有任何效果。这是第一个问题。
第二个问题出现在 rxdart
包中。由于新软件包 Observable
不受支持并在互联网上搜索并尝试使用 Stream
但它们不起作用。
rxdart 问题的源代码在这里。
class AuthService {
final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;
final FirebaseFirestore _db = FirebaseFirestore.instance;
Stream<User> user;
Stream<Map<String, dynamic>> profile;
String uuid;
AuthService() {
Stream<User> user = Observable(_auth.authStateChanges);
profile = user.switchMap((User u) {
if (u != null) {
return _db
.collection('users')
.doc(u.uid)
.snapshots()
.map((snap) => snap.data);
} else {
return Observable.just({});
}
});
}
}
它在 return Observable.just({});
附近显示错误,下一个问题出现在这一行 Stream<User> user = Observable(_auth.authStateChanges);
帮我解决这个问题,帮我理解我的问题。
currentUser
不再是方法,也不再是异步的。所以现在正确的调用是:
var user = _auth.currentUser;
我建议在将代码升级到最新版本时将 migration guide 放在手边,因为这些更改中有很多。
在较新版本的 Firebase Auth SDK for Flutter 中,如果您想要一个身份验证状态事件流,您应该使用 authStateChanges, as shown in the documentation.
设置一个身份验证状态流
FirebaseAuth.instance
.authStateChanges()
.listen((User user) {
if (user == null) {
print('User is currently signed out!');
} else {
print('User is signed in!');
}
});
我创建了一个带有 Google 登录并支持 firestore 的应用程序,最近我将所有依赖项更新为更新版本。这里旧代码有一些问题我不知道是什么问题。
Future<String> getCurrentUser() async {
var user = await _auth.currentUser();
if (user == null) {
return null;
} else {
return user.uid;
}
}
在_auth.currentUser()附近显示错误;错误是 The expression doesn't evaluate to a function, so it can't be invoked.
我已经搜索过了,但没有任何效果。这是第一个问题。
第二个问题出现在 rxdart
包中。由于新软件包 Observable
不受支持并在互联网上搜索并尝试使用 Stream
但它们不起作用。
rxdart 问题的源代码在这里。
class AuthService {
final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;
final FirebaseFirestore _db = FirebaseFirestore.instance;
Stream<User> user;
Stream<Map<String, dynamic>> profile;
String uuid;
AuthService() {
Stream<User> user = Observable(_auth.authStateChanges);
profile = user.switchMap((User u) {
if (u != null) {
return _db
.collection('users')
.doc(u.uid)
.snapshots()
.map((snap) => snap.data);
} else {
return Observable.just({});
}
});
}
}
它在 return Observable.just({});
附近显示错误,下一个问题出现在这一行 Stream<User> user = Observable(_auth.authStateChanges);
帮我解决这个问题,帮我理解我的问题。
currentUser
不再是方法,也不再是异步的。所以现在正确的调用是:
var user = _auth.currentUser;
我建议在将代码升级到最新版本时将 migration guide 放在手边,因为这些更改中有很多。
在较新版本的 Firebase Auth SDK for Flutter 中,如果您想要一个身份验证状态事件流,您应该使用 authStateChanges, as shown in the documentation.
设置一个身份验证状态流FirebaseAuth.instance .authStateChanges() .listen((User user) { if (user == null) { print('User is currently signed out!'); } else { print('User is signed in!'); } });