如何解决如何将rxdart Observable转换为Stream
我当时在git上查看firebase auth的代码,它可以正常工作,但是当我将依赖项(尤其是rxdart)的依赖关系从^ 0.21.0升级到当前(^ 0.24.1)时出现了问题),我看到其他question指向
Observable可以用Stream代替 在接受的答案。我可以改变
Observable<FirebaseUser> user; // firebase user
..
user = Observable(_auth.onAuthStateChanged);
到
Stream<FirebaseUser> user; // firebase user
..
user = _auth.onAuthStateChanged;
但是
Observable<Map<String,dynamic>> profile; // custom user data in Firestore
..
profile = user.switchMap((FirebaseUser u) {
if (u != null) {
return _db
.collection('users')
.document(u.uid)
.snapshots()
.map((snap) => snap.data);
} else {
return Observable.just({});
}
});
我尝试过
Object profile;
..
user.map( (FirebaseUser u) {
if (u != null) {
return _db
.collection('users')
.document(u.uid)
.snapshots()
.map((snap) => snap.data);
} else {
return Stream.empty();
}
});
但是它不会触发监听,并且不会读取用户个人资料。
解决方法
您可以像这样使用它
Stream<Map<String,dynamic>> profile = user.switchMap((u) {
if (u != null) {
return _db
.collection('users')
.document(u.uid)
.snapshots()
.map((snap) => snap.data);
} else {
return Stream.value({});
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。