Будущее <int>не может получить данные из Firebase - PullRequest
1 голос
/ 20 марта 2019

Я пытаюсь получить длину коллекции в Firebase, используя Flutter.У меня есть страница профиля, которая загружает, сколько переходов вы сделали из базы данных, но я продолжаю получать Future<int>, когда я печатаю переменную.Как решить эту проблему?

class ProfilePage extends StatefulWidget {
   @override
  _ProfilePage createState() => new _ProfilePage();
}

int doneHikes;
Database temp = new Database();

class _ProfilePage extends State<ProfilePage> {

@override
  void initState() {
  super.initState();
  _numOfDoneHikes();
}

Future<void> _numOfDoneHikes() async{
  var asyncResult = await temp.numOfDoneHikes();
  setState(() => doneHikes = asyncResult);
  print(doneHikes);

}

numOfDoneHikes функция в объекте базы данных:

Future<int> numOfDoneHikes() async {
  return Firestore.instance.collection(globalUserName)
    .document("Done Hikes").collection("Hike List").snapshots().length;
}

С этим кодом я получаю doneHikes печать

instance of Future<int>

1 Ответ

0 голосов
/ 20 марта 2019

Вам нужно сначала дождаться документов, прежде чем вы сможете получить length списка. Для этого вы захотите использовать getDocuments() вместо snapshots(), так как последний возвращает поток:

Future<int> numOfDoneHikes() async {
  final documents = await Firestore.instance.collection(globalUserName)
    .document("Done Hikes").collection("Hike List").getDocuments();
  return documents.length;
}
...