我在我的项目中使用Firestore-对于我拥有文档的每个用户和每个文档中的子集合(最近的,计划的)。
当前,我在我的应用程序中使用了两个StreamBuilder-一个用于getRecent
的getter,另一个用于getPlanned
,但是我认为这不是一个好方法。
有没有更好的方法,如何在一个流中查询这两个子集合(将来会有更多..)? (或者如何优化程序以不占用太多带宽)
这是Flutter中我的代码示例
// Get planned (getter in Data service class)
Stream<dynamic> get getPlanned {
return data
.document(uid)
.collection("planned")
.snapshots()
.map(_snapshotToPlanned);
}
// Stream Builder in Home widget
StreamBuilder(
stream: Data(uid: user.uid).getPlanned,
builder: (context, snapshot) {
if (snapshot.hasData) {
plannedTrips = snapshot.data;
if (snapshot.data.length == 0) return NothingWidget();
return PageView.builder(
pageSnapping: true,
controller: _pageController,
scrollDirection: Axis.horizontal,
itemCount: plannedTrips.length,
itemBuilder: (context, i) {
return PlannedTrip(planned: plannedTrips[i]);
},
);
} else ...
您有什么想法,如何解决这个问题? 谢谢!