我有三个这样的流:
final _light1RoomCtlr = BehaviorSubject<String>();
final _light2RoomCtlr = BehaviorSubject<String>();
final _light3RoomCtlr = BehaviorSubject<String>();
Stream<String> get getLight1Room => _light1RoomCtlr.stream;
Function(String) get setLight1Room => _light1RoomCtlr.sink.add;
Stream<String> get getLight2Room => _light2RoomCtlr.stream;
Function(String) get setLight2Room => _light2RoomCtlr.sink.add;
Stream<String> get getLight3Room => _light3RoomCtlr.stream;
Function(String) get setLight3Room => _light3RoomCtlr.sink.add;
我想将它们全部合并,以便在需要时获取所有发出的值。
问题是..我正在使用 bloc 模式并且我没有 initState() 函数,所以我无法初始化东西..所以 dart 不会让我在同一个文件上做这样的事情:
final List<String> _lightRooms = List<String>();
Observable.merge([getLight1Room, getLight2Room, getLight3Room]).listen((room) =>
_lightRooms.add(room);
));
我已经尝试了很多东西,但我不断收到错误消息:只有静态成员是可初始化的..或类似的东西..我如何使用反应式编程和 bloc 模式进行此操作?如果我在我需要的小部件上进行监听,我可能会丢失另一个小部件的信息。我尝试了 rxjs 示例,但在这里它不起作用,因为这只是类定义的东西。