【问题标题】:Cancelling a StreamSubscription in flutter在颤动中取消 StreamSubscription
【发布时间】:2020-10-01 20:37:38
【问题描述】:

我有以下流订阅

Stream<Uint8List> stream = await USBSerialSingleton.instance.inputStream;
usbStream = stream.listen(onDataReceivedFromUSBSerial);

inputStream 是这样暴露的广播流。

Future<Stream<Uint8List>> get inputStream async {
final UsbPort port = await this.port;
return port.inputStream.asBroadcastStream();
}

我想停止收听直播,所以我打电话给

usbStream.cancel();

但我一直在我的 onDataReceivedFromUSBSerial 方法上收到消息。即使我关闭了所有这些都在其上实现的对话,我仍然会在onDataReceivedFromUSBSerial 上收到消息。

问题:如何停止收听我的usbStream

【问题讨论】:

  • 你在做什么看起来是正确的。您确定要取消的usbStream 订阅是正确的吗?
  • @pskink 知道为什么我的没有取消吗?
  • @lrn 是的,非常确定。
  • 试试await usbStream.cancel();
  • @dev-aentgs 是的,有来自连接的数据。关闭对话后,我就不需要收听数据了。

标签: flutter dart dart-stream


【解决方案1】:

您必须等待订阅取消,所以这样做:

await usbStream.cancel();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-24
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2021-09-14
    相关资源
    最近更新 更多