飞镖:BroadcastStream保持最后的状态?

问题描述 投票:1回答:1

我连接到蓝牙装置(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这一点。 (我确信你们中的一个有这种情况的简单的解决方案)

我基本上是寻找一个广播流封装来实现这一行为。

dart stream
1个回答
0
投票

https://pub.dartlang.org/documentation/rxdart/latest/rx/BehaviorSubject-class.html这是否

特别StreamController捕获已添加到控制器的最新项目,并发射作为第一个项目到任何新的听众。

这个题目可以发送数据,错误的和做事件监听器。已添加到主题的最新项目将被发送到受试者的任何新的听众。在此之后,任何新的事件将被适当地发送给听众。因此能够提供如果没有物品已被添加到所述对象将被发射的种子值。

BehaviorSubject是,默认情况下,广播(又名热)控制器,以实现在Rx主题合同。这意味着主题的stream可以听了多次。

© www.soinside.com 2019 - 2024. All rights reserved.