У меня есть эта функция, которая выполняет некоторые firestore
операции и извлекает данные.
Но проблема в том, что это возвращает пустое значение. Причина, по которой я обнаружил, заключалась в том, что он возвращает значение перед извлечением данных, он не ждет, пока извлечет данные .
Вот мой код. Я напечатал несколько операторов print
, чтобы проверить порядок выполнения.
getNewsOnSearchBar() {
final String _collection = 'news';
final Firestore _fireStore = Firestore.instance;
var newsList = [];
print("1");
getData() async {
print("2");
return await _fireStore.collection(_collection).getDocuments();
}
getData().then((val) async{
if (val.documents.length > 0) {
print("3");
for (int i = 0; i < val.documents.length; i++) {
newsList.add(await val.documents[i].data["headline"]);
}
} else {
print("Not Found");
}
});
print("4");
return ok;
}
И результат:
I/flutter (17145): 1
I/flutter (17145): 2
I/flutter (17145): 4 // 4 prints before 3
I/flutter (17145): 3
Мне нужен результат:
I/flutter (17145): 1
I/flutter (17145): 2
I/flutter (17145): 3
I/flutter (17145): 4
Кто-нибудь может мне помочь?