我正在寻找一种将普通Stream转换为BehaviorSubject的方法。
这是我执行的代码,但是我不知道如何指定我的类返回BehaviorSubject。而且我的转换器抛出了运行时错误(监听调用为null)。
import 'dart:async';
import 'package:rxdart/subjects.dart';
class BehaviorSubjectTransformer<S, T> extends StreamTransformerBase<S, T> {
StreamController _controller;
StreamSubscription _subscription;
bool cancelOnError;
// Original Stream
Stream<S> _stream;
BehaviorSubjectTransformer({bool sync: false, this.cancelOnError}) {
_controller = new BehaviorSubject(onListen: _onListen, onCancel: _onCancel, sync: sync);
}
BehaviorSubjectTransformer.broadcast({bool sync: false, bool this.cancelOnError}) {
_controller = new BehaviorSubject(onListen: _onListen, onCancel: _onCancel, sync: sync);
}
void _onListen() {
_subscription = _stream.listen(onData,
onError: _controller.addError,
onDone: _controller.close,
cancelOnError: cancelOnError);
}
void _onCancel() {
_subscription.cancel();
_subscription = null;
}
void onData(S data) {
_controller.add(data);
}
Stream<T> bind(Stream<S> stream) {
this._stream = stream;
return _controller.stream;
}
}