【发布时间】:2020-11-22 12:23:51
【问题描述】:
您好,我在 StreamBuilder 中有一个对 Firestore 的简单查询
StreamBuilder(
stream: FirestoreManager.firebaseFirestore
.collection("orders")
.orderBy('logs.0', descending: true)
.where('status', whereIn: current['id'])
.snapshots(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snap) {
print(snap.data.toString());
if (!snap.hasError && snap.hasData) {
QuerySnapshot snapshot = snap.data;
if (snapshot.documents.isNotEmpty) {
List<DocumentSnapshot> snapList = snapshot.documents;
return ListView.builder(
padding: EdgeInsets.only(right: 10, left: 10),
physics: ScrollPhysics(),
itemCount: snapList.length,
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return OrderListItem(
order: Order.fromJson(snapList[index].data),
);
},
);
} else {
return Center(
child: Text(
"No ${current['status'].toString().trim()} Order Available...!",
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
);
}
} else {
return Center(
child: CircularProgressIndicator(),
);
}
})
它对移动应用程序非常有效,但是当我尝试在网络上运行它时,它不起作用。
实际上它显示数据一秒钟然后再次消失。我通过使用print(snap.data.toString());打印快照数据得到了以下登录控制台@
js_primitives.dart:30 null
js_primitives.dart:30 Instance of 'QuerySnapshot'
js_primitives.dart:30 null
为什么会这样?为什么它显示的数据一次次消失呢?
如果我删除 .orderBy('logs.0', descending: true) 或 .where('status', whereIn: current['id']) ,那么它工作正常。
【问题讨论】:
-
请编辑问题以包含更多详细信息,尤其是您如何记录这些结果。鉴于您在此处提供的内容,我们应该能够重现该问题。
-
请检查一下,我只是使用
print(snap.data.toString());进行日志记录。 -
在 where 子句之后尝试 orderBy....也许你可以得到不同的 snapsnhots 顺序....
标签: flutter google-cloud-firestore flutter-web