首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >退出无限流

退出无限流
EN

Stack Overflow用户
提问于 2022-07-26 11:45:02
回答 2查看 52关注 0票数 0

我编写了这段代码,以便在蓝色包的帮助下,在我的颤振应用程序中扫描蓝牙设备。

代码语言:javascript
复制
Stream<List<ScanResult>> scannedDevices(int durationSeconds) async* {
  Stream<List<ScanResult>> stream = _flutterBlue.scanResults;
  List<ScanResult> payload = List<ScanResult>.empty(growable: true);

  _flutterBlue.startScan(timeout: Duration(seconds: durationSeconds));

  await for (List<ScanResult> results in stream) {
    payload.clear();
    for (ScanResult result in results) {
      payload.add(result);
    }
    yield payload;
}

问题是,scanResults流很受欢迎(请参阅这里),因此await for循环将永远运行,而我的scannedDevices流也将永远运行。

是否有办法在await for通过后中断scanDuration循环?谢谢

EN

回答 2

Stack Overflow用户

发布于 2022-07-26 11:48:53

是的,您只需返回null就可以中断循环。

代码语言:javascript
复制
 Stream<List<ScanResult>> scannedDevices(int durationSeconds) 
  async* {
    Stream<List<ScanResult>> stream = _flutterBlue.scanResults;
     List<ScanResult> payload = List<ScanResult>.empty(growable: 
       true);

     _flutterBlue.startScan(timeout: Duration(seconds: 
 durationSeconds));

 await for (List<ScanResult> results in stream) {
   payload.clear();
   for (ScanResult result in results) {
  payload.add(result);
 }
return payload;
}
票数 0
EN

Stack Overflow用户

发布于 2022-07-26 11:56:58

只需向您正在侦听的流添加一个timeout即可。

另一种选择是使用StreamTransformer,而不是使用await for

代码语言:javascript
复制
Stream<List<ScanResult>> scannedDevices(int durationSeconds) async* {
  Stream<List<ScanResult>> stream = _flutterBlue.scanResults.timeout(Duration(seconds: durationSeconds));
  List<ScanResult> payload = List<ScanResult>.empty(growable: true);

  _flutterBlue.startScan(timeout: Duration(seconds: durationSeconds));

  await for (List<ScanResult> results in stream) {
      payload.clear();
      for (ScanResult result in results) {
        payload.add(result);
      }
      yield payload;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73122789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档