Значения извлекаются из магазина только после горячей перезагрузки в флаттере - PullRequest
0 голосов
/ 19 сентября 2019

Я новичок, чтобы трепетать.Это то, что я сделал до сих пор (это не весь код). Как вы можете видеть, я пытаюсь получить некоторые данные из firestore во флаттере.Проблема в том, что числовое значение всегда равно нулю при входе на страницу.Но если я перезагружу страницу, это даст мне правильное значение.Я Почему это?Я думаю, что это как-то связано с будущим и асинхронностью.Но я их пока не понимаю должным образом.

Widget build(BuildContext context) {

someMethod() {
  return Firestore.instance
      .collection('comments')
      .where("Post", isEqualTo: widget.snapshot.documentID)
      .getDocuments();
}

someMethod().then((QuerySnapshot snapshot) {
  if (snapshot.documents.isNotEmpty) {
    db = snapshot.documents;
  }
});

int number = db?.length ?? 0;
print(number);
}

1 Ответ

2 голосов
/ 19 сентября 2019

Вы должны использовать setState (), чтобы уведомить платформу об изменении внутреннего состояния этого объекта.

someMethod().then((QuerySnapshot snapshot) {
  if (snapshot.documents.isNotEmpty) {
    setState(() {
      db = snapshot.documents;
    });
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...