Flutter + firestore: список фильтров - PullRequest
1 голос
/ 06 октября 2019

У меня есть функция, которая получает документы из firestore.

  List<Post> posts;
  List<Post> filteredposts;

  void getDeals() async {
    QuerySnapshot snapshot = await Firestore.instance
        .collection('deals')
        .document('${widget.stad.toLowerCase()}')
        .collection('deals')
        .orderBy('endTime', descending: false)
        .getDocuments();
    List<Post> posts =
        snapshot.documents.map((doc) => Post.fromDocument(doc)).toList();
    setState(() {
      this.posts = posts;
    });
  }

Я бы хотел отфильтровать этот список, например, где bool: (в документе firestore) "typeX" равно true.

  setState(() {
      filteredposts = posts.where((snapshot) => snapshot.typeX == true);
    });

Но я получаю сообщение об ошибке:

'WhereIterable<Post>' is not a subtype of type 'List<Post>'

Что я делаю не так?

Большое спасибо!

1 Ответ

1 голос
/ 07 октября 2019

Многие из вспомогательных методов List / Iterable, таких как map, where, expand ... и т. Д., Возвращают вариант Iterable, но не List, поскольку базовая структура данных не требуетбыть списком (например, это может быть Set).

Поэтому в большинстве случаев вам нужно вызывать toSet или toList для результата этих методов.

В вашем случае это будет

filteredposts = posts.where((snapshot) => snapshot.typeX == true).toList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...