фильтровать поток List <Object>по его свойствам, которые также являются List - PullRequest
0 голосов
/ 17 октября 2019

У меня есть List<Content> и я хочу фильтровать по свойствам поля, являющегося списком.

Содержимое

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)))),

для фильтрации по свойству slug Tag.

Однако теперь это Dart, Flutter и rxdart. У меня так далеко:

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

contentOutput - это поток BehaviorSubject.

По сути, у меня есть несколько 1000 элементов, и я хотел бы отображать только контент с определенным тегом.

Как отфильтровать по свойству списка свойств объектов, который является списком в Flutter / Dart?

1 Ответ

0 голосов
/ 17 октября 2019

Используйте что-то вроде:

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

Замените предикат tag.slug == whatever тем тестом, который вам нужен.

...