Вложенный цикл for не работает должным образом в Flutter

#arrays #loops #flutter #dart #google-cloud-firestore

#массивы #циклы #flutter #dart #google-облако-firestore

Вопрос:

В построителе потоков у меня есть 2 цикла for, первый цикл for выполняет итерацию по всем документам, в каждом документе есть массив, и каждый элемент массива содержит данные в формате карты, второй цикл for выполняет итерацию по элементам массива.

Я ожидаю, что вывод будет отображаться следующим образом.

 -------------------
| DOCUMENT 1      |
-------------------
| ARRAY ELEMENT 1 |
| ARRAY ELEMENT 2 |
-------------------

-------------------
| DOCUMENT 2      |
-------------------
| ARRAY ELEMENT 3 |
| ARRAY ELEMENT 4 |
| ARRAY ELEMENT 5 |
-------------------
  

В то время как вывод отображается следующим образом:

 -------------------
| DOCUMENT 1      |
-------------------
| ARRAY ELEMENT 1 |
| ARRAY ELEMENT 2 |
| ARRAY ELEMENT 3 |
| ARRAY ELEMENT 4 |
| ARRAY ELEMENT 5 |
-------------------

-------------------
| DOCUMENT 2      |
-------------------
| ARRAY ELEMENT 1 |
| ARRAY ELEMENT 2 |
| ARRAY ELEMENT 3 |
| ARRAY ELEMENT 4 |
| ARRAY ELEMENT 5 |
-------------------
  

Вот как выглядит мой цикл for:

         final List<DocTile> docs = [];
        final List<DocListTile> docTopics = [];
    //Loop for accessing the individual documents from Firestore
        for (var doc in docSnapshot) {
          final docID = doc.id;
          final docTitle = doc.data()['docTitle'];
          final docTopic = doc.data()['docTopics'];
      //Loop for accessing the individual array elements present within each document, which holds the data in map format.
          for (var topic in docTopic) {
            docTopics.add(
              DocListTile(
                topicTitle: topic['docTopicTitle'],
                tileNavValue: topic['docTopicID'],
              ),
            );
          }
          docs.add(
            DocTile(
              topicHeaderTitle: docTitle.toString().toUpperCase(),
              topicList: docTopics,
            ),
          );
          // docTopics.clear();
        }
  

Буду признателен, если кто-нибудь поможет мне исправить эту проблему. Заранее большое спасибо!

Ответ №1:

Может быть, вам следует поместить эту строку ниже?

 ...
remove from here ---->       final List<DocListTile> docTopics = [];
        //Loop for accessing the individual documents from Firestore
        for (var doc in docSnapshot) { 
place it here    ---->       final List<DocListTile> docTopics = [];
...
  

Комментарии:

1. Блестяще, работает отлично, большое вам спасибо @Dmitry_Kovalov 🙂