Flutter: Как получить конкретный документ в firestore при использовании Streambuilder <QuerySnapshot> - PullRequest
0 голосов
/ 08 ноября 2019

У меня сейчас проблема с кодом, где я пытаюсь получить конкретные данные в своей базе данных. Я хочу сделать, это КОЛЛЕКЦИЯ> КОНКРЕТНЫЙ ДОКУМЕНТ, КОТОРЫЙ Я ПЫТАЮСЬ ПОЛУЧИТЬ> ПОЛЯ (МОИ ДАННЫЕ МАРШРУТА). На данный момент у меня есть код, где он делает то, что я пытаюсь сделать, но проблема в том, что он получает только первые данные в моем документе. Пожалуйста, помогите.

Мой код:

 StreamBuilder<QuerySnapshot>(
                stream: db.collection('NOTIFICATION').snapshots(),
                builder: (context, snapshot) {
                  if (snapshot.hasData) {
                    return Column (
                        children: snapshot.data.documents.first['Respondent']
                            .map<Widget>((respondent) => buildItem(respondent))
                            .toList());
                  } else {
                    return SizedBox();
                  }
                })

Структура моей базы данных:

enter image description here

Сильно нужна помощь.

1 Ответ

1 голос
/ 08 ноября 2019

Вы можете изменить это:

snapshot.data.documents.first['Respondents'];

для этого:

snapshot.data.documents.firstWhere((doc) => doc.documentID == 'id')['Respondents'];

Обработка различных случаев:

var doc = snapshot.data.documents
    .firstWhere((doc) => doc.documentID == 'id', orElse: () => null);
if (doc == null) {
  return Text('Document doesn\'t exist');
} else if (doc['Respondents'] == null) {
  return Text('Document without respondents');
} 
return Column(children: doc['Respondents'].map<Widget>(...));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...