我正在使用以下代码从firestore集合中获取文档总数,然后将其存储到int countDocument,它确实准确地获取了值,但是当我以前在嵌套在Scaffold中的Flutter小部件Text Widget中显示相同的值时,在加载屏幕时,它不显示值,仅显示null,仅在热加载时,它在屏幕上显示值。

为了在countDocument中表示Text Widget的值,我做了countDocument.toString()',但在初始加载屏幕时仍然不显示该值

我应该如何解决?

void countDocuments() async {
    StreamSubscription<QuerySnapshot> _myDoc = await Firestore.instance.collection('users').snapshots().listen((result) {

         countDocument = result.documents.length;
         print(countDocument);


    });

最佳答案

您需要使用StatefulWidget,然后使用setState,您可以更改Text的数据:

  void countDocuments() async {
    StreamSubscription<QuerySnapshot> _myDoc = await Firestore.instance
        .collection('users')
        .snapshots()
        .listen((result) {
      setState(() {
        countDocument = result.documents.length;
      });
      print(countDocument);
    });
  }
setState将使用新数据再次调用build方法。在build方法内,您可以执行以下操作:
Text(countDocument ?? "loading")

10-08 16:34