我连接到蓝牙装置(BLE),它向我发送数据。因为我只能有一个连接,但我需要在几个地方流(在同一时间),我想到了一个广播流将是一个很好的解决方案。
与广播的问题是,该项目不存。 (总的来说,我认为这不是一个好方法,那不是广播流保持所有项目发出......,似乎只是错误的)
要获得所需的行为我这样做:
StreamGroup.merge([
Future.value(_latestItemEmitted).asStream(),
broadcast.stream
])
.where((item) => item != null) // to avoid emitting null in the initial state of the `_lastItemEmitted`
.distinct() // to avoid duplicates
这是工作,但配有两个缺点。
我不想用RxDart这一点。 (我确信你们中的一个有这种情况的简单的解决方案)
我基本上是寻找一个广播流封装来实现这一行为。
https://pub.dartlang.org/documentation/rxdart/latest/rx/BehaviorSubject-class.html这是否
特别StreamController捕获已添加到控制器的最新项目,并发射作为第一个项目到任何新的听众。
这个题目可以发送数据,错误的和做事件监听器。已添加到主题的最新项目将被发送到受试者的任何新的听众。在此之后,任何新的事件将被适当地发送给听众。因此能够提供如果没有物品已被添加到所述对象将被发射的种子值。
BehaviorSubject是,默认情况下,广播(又名热)控制器,以实现在Rx主题合同。这意味着主题的
stream
可以听了多次。