【发布时间】:2021-03-23 23:22:04
【问题描述】:
我不明白为什么这个广播流不起作用。
我正在将数据从 _auth.onAuthStateChanged 发送到一个新的 StreamController,以便我可以更好地控制流。
下面的代码可以正常工作,但是一旦我取消注释 _userStream.listen(_handleUserStream); 行,流就会停止工作,即使 userStream 是广播流。
我尝试将 StreamController 初始化为 StreamController.broadcast(),但即使只有一个侦听器,它也根本不起作用。
class AuthService() {
final FirebaseAuth _auth = FirebaseAuth.instance;
StreamController<FirebaseUser> _userStreamController;
Stream<User> _userStream;
Stream<User> get userStream => _userStream;
AuthService() {
initStream();
}
initStream() async {
_userStreamController = StreamController<FirebaseUser>();
_userStream = _userStreamController.stream
.asBroadcastStream()
.asyncMap(_userFromFirebaseUser);
_auth.onAuthStateChanged.listen((event) {
_userStreamController.add(event);
});
// _userStream.listen(_handleUserStream);
}
... other methods
}
【问题讨论】:
标签: flutter firebase-authentication