Как правильно получить данные из Firebase Firestore во Flutter? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть база данных Firebase Firestore, как вы можете видеть на картинке. Я хотел бы получить каждый документ из коллекции вопросов с их полями. Я нашел следующее решение для inte rnet:

//in this list we store the data
List adatok = [];

Future<void> getData(){
  databaseReference.getDocuments().then((QuerySnapshot snapshot) {
    snapshot.documents.forEach((f){
      data = f.data;
      adatok.add(data);
      print(adatok.length);
      print(adatok);
        }
      );
    }
  );
}

Моя проблема в том, что когда я вызываю эту функцию (в функции onPresed () кнопки), при первом нажатии на adatok список пуст. Но когда я нажимаю кнопку во второй раз, она содержит все данные, которые я хотела получить.

Я что-то не так сделал? Есть ли другой способ получить данные?

Структура базы данных

1 Ответ

1 голос
/ 30 марта 2020

Используйте код ниже:

List adatok = [];

Future<void> getData() async{
 QuerySnapshot snapshot = await databaseReference.getDocuments();
    snapshot.documents.forEach((f){
      data = f.data;
      adatok.add(data);
      print(adatok.length);
      print(adatok);
    }
}

Таким образом, программа ждет, пока не получит все документы. а затем добавляет его к вашим снимкам.

Также вам нужно изменить функцию onPressed () на async / await следующим образом:

onPressed:() async{
await getData();
/...
}

Таким образом, программа ожидает завершения getData ().

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