Вложенный ListView, StreamBuilder и Subcollection - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь создать вложенный ListView, но не знаю, смогу ли я объединить 2 построителя потоков во вложенном представлении, так как он не работает.Во втором StreamBuilder с запросом подколлекции данные, похоже, не возвращаются, и я не могу понять, почему.

Когда я жестко кодирую идентификатор документа, я не получаю никакой ошибки, но запрос все равно не 'Кажется, он не возвращает никаких данных.

Кто-нибудь знает, как создать вложенное представление списка с помощью streambuilders и Firestore?

  List<Widget> buildStreamedListView() {
return [ StreamBuilder(
    stream: Firestore.instance.collection('course')
              .document(widget.data.documentID)
              .collection('section')
              .snapshots(),
    builder: (context, snapshot) {
      if (!snapshot.hasData) return const Text("Loading...");
      return Expanded(child: ListView.builder(
        itemCount: snapshot.data.documents.length,
        itemBuilder: (context, index) {
          //return buildListItem(context, snapshot.data.documents[index]);

          return Card(
            child: ExpansionTile(
              title: Text(snapshot.data.documents[index]['name']),
              children: <Widget>[
                StreamBuilder(
                  stream: Firestore.instance.collection('course')
                    .document(widget.data.documentID)
                    .collection('section')
                    .document('4CjAZEQ416NYpu3ra3OE')
                    .collection('page')
                    .snapshots(),
                  builder: (context, snap) {
                    return ListView.builder(
                      shrinkWrap: true,
                      itemCount: snap.data.documents.length,
                      itemBuilder: (context, index) {
                        return Text('Hello you');
                      }
                    );
                  }
                ),
              ],
            ),
          );
        }
      ));
    },
  )];

}

1 Ответ

0 голосов
/ 25 мая 2019

Причина, по которой у меня возникли странные ошибки, заключалась в том, что во второй функции компоновщика я не добавил следующий код:

if (!snapshot.hasData) return const Text("Loading...");

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...