Не загружает значение в реальном времени - PullRequest
0 голосов
/ 29 мая 2020

Я использую приведенный ниже код, чтобы получить общее количество документов из коллекции firestore, а затем сохранить его в int countDocument, он получает значение точно, но когда я использовал для отображения того же значения в виджете Flutter Text Widget который вложен в Scaffold, при загрузке экрана он не показывает значение, показывая только 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);


    });

1 Ответ

1 голос
/ 29 мая 2020

Вам нужно использовать 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")
...