Flutter:如何检查流是否为空或没有事件?

gev0vcfq  于 2022-12-05  发布在  Flutter
关注(0)|答案(2)|浏览(177)

我使用flutter_beacon包来扫描信标,

_streamRanging =
            flutterBeacon.ranging(regions).listen((RangingResult result) {
              if (result.beacons.isEmpty) {
                _streamRanging.cancel();
                onBleSearch(false);
              }
              //do something else
            }
            );

现在,由于没有找到信标,我想调用onBleSearch(false),但它没有进入.listen((l){})的函数,因为我认为没有事件调用该函数
那么我如何检查流中是否没有数据并调用这个onBleSearch(false)函数呢?

unftdfkk

unftdfkk1#

可以检查Stream是否为空,但要注意Stream提供了一种接收事件序列的方式。Stream可以为一个示例“空”,也可能在下一个示例中保存一个值。这里你可以做的是持续监听Stream中的事件,并根据用例触发方法。

StreamController.stream.listen(
  (event) => print('Value: $event'), // Check if empty
);

另一种方法是使用Stream.toList检查来自Stream的List是否有值

uoifb46i

uoifb46i2#

使用此.isEmpy检查流是否已连接

Stream<String>? myStream;


Future<void> checkStream() async {
    bool empty = await myStream.isEmpty;
    if (empty) {
      restart();
      setState(() {});
    }
  }

相关问题