Получить содержимое документа из Firebase в Flutter - PullRequest
1 голос
/ 18 января 2020

Я пытаюсь получить пользовательские данные из коллекции Firebase.

Вот как это выглядит: Firebase

Это метод, который я написал для получения данных:

static String getUserData(creatorId, keyword) {
 var documentName = Firestore.instance
     .collection('users')
     .document(creatorId)
     .get()
     .then((DocumentSnapshot) {
   String data = (DocumentSnapshot.data['$keyword'].toString());
   return data;
 });
}

Метод только возвращает ноль. Если я печатаю строку в методе, это работает. Как я могу вернуть строку?

Помощь будет принята с благодарностью.

Ура Павел

1 Ответ

1 голос
/ 18 января 2020

Вам нужно использовать async и await, чтобы иметь возможность ждать полного извлечения данных, а затем вы можете вернуть данные.

Ключевые слова asyn c и await обеспечивают декларативный способ определения асинхронных функций и использования их результатов.

Например:

Future<String> getUserData(creatorId, keyword) async {
 var documentName = await Firestore.instance
     .collection('users')
     .document(creatorId)
     .get()
     .then((DocumentSnapshot) {
   String data = (DocumentSnapshot.data['$keyword'].toString());
   return data;
 });
}

А затем, поскольку getUserData возвращает Future, вы можете использовать ключевое слово await для его вызова:

await getUserData(id, key);

https://dart.dev/codelabs/async-await#working -с фьючерсами-асин c и ожидание

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