首页 > 解决方案 > Flutter 流列表过滤器

问题描述

我正在构建一个搜索特定蓝牙设备的应用程序。我正在使用 FlutterBlue,所以我的代码如下所示:

StreamBuilder<List<ScanResult>>(
    stream: FlutterBlue.instance.scanResults

问题是我想根据某些标准过滤掉结果。 scanResultsis typeStream<List<ScanResult>>并且正常List我会这样做.where((element) => true/false),但是当我这样做时.whereelement实际上是 typeList而不是ScanResultwhich 没有意义。

无法弄清楚我应该如何做到这一点。我四处寻找无济于事。我必须缺少维护 Stream 的设置,但能够基于.where

标签: flutterdart

解决方案


要过滤列表,您需要直接过滤StreamBuilder构建器中提供的快照数据。

这是一个小例子:

StreamBuilder<List<ScanResult>>(
  stream: FlutterBlue.instance.scanResults,
  builder: (_, snapshot) {
    if (!snapshot.hasData) {
      return LoadingWidget()
    }

    final filteredResult = snapshot.data!.where((element) => ...);
  },
);

推荐阅读