Flutter Firestore FutureBuilder фильтр с оператором if - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь отфильтровать список FutureBuilder следующим образом:

return new FutureBuilder(
                    future: Firestore.instance
                        .collection('user')
                        .getDocuments(),
                    builder: (BuildContext context, AsyncSnapshot snapshot2) {
                      if (snapshot2.hasData) {
                        if (snapshot2.data != null) {
                          return new Column(
                            children: <Widget>[
                              new Expanded(
                                child: new ListView(
                                  children: snapshot2.data.documents
                                      .map<Widget>((DocumentSnapshot document) {
                                        if(document['first_name'] == 'James') {
                                          return new FindFollowerWidget(
                                            name: document['first_name'] + " " + document['last_name'],
                                            username: document['username'],
                                          );
                                        }
                                  }).toList(),
                                ),
                              ),
                            ],
                          );
                        }
                      }else {
                        return new CircularProgressIndicator();
                      }
                    });

Этот FutureBuilder работает, когда я удаляю оператор if;однако, когда я включаю следующий оператор if, Flutter выдает ошибку:

new ListView(
    children: snapshot2.data.documents.map<Widget>((DocumentSnapshot document) {
        if(document['first_name'] == 'James') {
            return new FindFollowerWidget(
                name: document['first_name'] + " " + document['last_name'],
                username: document['username'],
                );
        }
    ).toList(),
 ),

Мой вопрос: как я могу вернуть FindFollowerWidget только тогда, когда поле снимка документа имеет определенное значение (в данном случае имябыть "Джеймсом"?

Спасибо!

1 Ответ

0 голосов
/ 23 ноября 2018

Я не уверен в том, что вы спрашиваете.Возможно List.where () метод?

snapshot2.data.document
    .where((document)=>document["first_name"]=="James")
    .map((document)=>FindFollowerWidget(...))
    .toList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...