我正在使用以下代码从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")