仅在flutter中热重新加载后才能从Firestore中检索值

时间:2019-09-19 02:11:45

标签: firebase flutter dart google-cloud-firestore

我是新手。到目前为止,这就是我所做的(这不是完整的代码)。您可以看到,我正在尝试从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 个答案:

答案 0 :(得分:2)

您必须使用setState()通知框架该对象的内部状态已更改。

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