Я использую Firestore в своем проекте - для каждого пользователя у меня есть документ, и в каждом документе у меня есть подколлекции (недавние, запланированные).
- элементы
- документ (uid)
- подколлекция (недавно)
- doc1 (несколько полей)
- doc2 ...
- субколлекция (планируется)
В настоящее время я использую два StreamBuilder в своем приложении - один для getRecent
геттера и второй для 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 ...
Есть ли у вас какие-либо идеи, как решить эту проблему? Спасибо!