【问题标题】:filter stream of List<Object> by its properties that are also a List通过也是 List 的属性过滤 List<Object> 的流
【发布时间】:2020-02-13 17:59:21
【问题描述】:

我有一个List&lt;Content&gt;,并希望按列表字段的属性进行过滤。

内容

class Content {
// ...
  final List<Tag> tags;
}

标签

class Tag {
// ...
  final String name;
  final String slug;
}

来自 Angular 我使用

map(data => data.filter(a => a.tags.some(t => t.slug.includes(this.slug)))),

根据 Tag 的 slug 属性进行过滤。

不过现在是 Dart、Flutter 和 rxdart。 我到目前为止:

    applicationBloc.contentOutput.map(
            (contents) => contents.where(
                    (item) => item.tags == widget.slug).toList()
    )

contentOutput 是一个 BehaviorSubject 的流。

基本上我有几 1000 个项目,并且只想显示带有特定标签的内容。

在 Flutter/Dart 中,如何按对象属性列表的属性进行过滤?

【问题讨论】:

    标签: flutter dart rxdart


    【解决方案1】:

    使用类似的东西:

      var foo = <Content>[];
      var filtered = foo
          .where((content) => content.tags.any((tag) => tag.slug == 'bingo'))
          .toList();
    

    用您需要的任何测试替换 tag.slug == whatever 谓词。

    【讨论】:

    • 我不能使用.any。是因为我的地图中有一个列表吗?
    • 如果你有一个列表,你可以这样做: var filters = foo .where((content) => content.tag == 'bingo') .toList();
    猜你喜欢
    • 2021-09-03
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多