Как использовать 2-мерные массивы в Dart при получении данных из магазина - PullRequest
0 голосов
/ 30 июня 2019

Я пытался создать виджет, в котором члены группы запросов отображают свои изображения профиля внутри виджета.Я могу собрать данные, и я решил использовать 2D-массивы, в которых каждый индекс массива имеет другой массив, содержащий все URL-адреса фотографий всех пользователей в этой группе и т. Д.

Для этогоСначала мне нужно было создать двумерный массив идентификаторов пользователей с каждым индексом, содержащим массив с идентификаторами пользователей соответствующих членов.У меня не было проблем с этим, так как эти данные уже были в массиве на firestore для каждого запроса.

Приведенный ниже код получает массив идентификаторов пользователей для всех членов каждого запроса из firestore и помещает каждый массив в 2D-массив, который содержит информацию для всех запросов этого пользователя.

_firestore.collection('users').document('$uid').collection('requests')
              .getDocuments()
              .then((QuerySnapshot querysnap) {
            for (var doc in querysnap.documents) {
              setState(() {
                requesterIDs.add(requester);
                requestedFromId=doc.data['requested from'];
                requestedFromIdLists.add(requestedFromId);
              });}})
.then((_)=> setState((){

Затем я пытаюсь использовать идентификаторы для создания 2d-массива URL-адреса фотографий каждого пользователя:

for(int x=0; x<requestedFromIdLists.length;x++){
            for(int y=0;y<requestedFromIdLists[x].length;y++){
              String id=requestedFromIdLists[x][y];
              _firestore.collection('users').document('$id').get().then((
                  DocumentSnapshot document) {
                setState(() {
                  String requestedPhoto = document.data['photoUrl'].toString();
                  requestedPhotoUrls.add(requestedPhoto);
                });
              });}
            requestedPhotoUrlsLists.add(requestedPhotoUrls);
            requestedPhotoUrls.clear();
          }
        }));

Однако в итоге я получаю 2d-массив со всеми дублированными URL-адресами фотографий, как дважды вместо [[url1, url2], [url3]] я получаю это [[url1, url2, url3], [url1, url2, url3]], я прослеживал код несколько раз, и я думаю, что он как-то связан с этими двумя последними утверждениями 'положение, я думаю, что они были вызваны раньше или что-то ??Есть идеи?

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