Я передаю свой список конструктора идентификаторов документов Firestore, и я хочу получить и показать данные, принадлежащие этим идентификаторам, только в моей коллекции LinksData.
Итак, в основном я хочу получить моментальный снимок документа всех документов, принадлежащих идентификаторам, которые находятся в другом моем списке (который я передаю в конструкторе).
Я мог придумать два метода:
- Используя StreamBuilder, но, насколько мне известно, с его помощью я получу либо все снимки документов в моей коллекции, либо только один.
- Используя Future Builder, я сделал следующую функцию, но когда я ее использую, она показывает следующую ошибку
[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Bad state: field does not exist within the DocumentSnapshotPlatform
Как я могу это сделать? Я не хочу получать все документы с помощью построителя потоков, потому что это повлияет на мои ежедневные чтения.
Вот код того, как я пытался использовать FutureBuilder.
FutureBuilder<List<LinkCards>>(
future: generateList(widget.linksDataIds),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(child: Text('Oops! Some Error Occurred!'));
} else {
if (!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
}
return GridView.builder(
gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 220,
mainAxisSpacing: 12.0,
),
itemCount: snapshot.data!.length,
itemBuilder: (context, index) {
return snapshot.data![index];
});
}
},
)
Вот моя будущая функция
Future<List<LinkCards>> generateList(List<dynamic> listLinksDataId) async {
FirebaseFirestore fireStore = FirebaseFirestore.instance;
List<LinkCards> listCards = [];
listLinksDataId.forEach((linkDataId) async {
print(linkDataId);
await fireStore
.collection('LinksData')
.doc(linkDataId)
.get()
.then((value) => {
listCards.add(LinkCards(
link: value.get('link'),
linkTitle: value.get('title'),
linkImage: value.get('image'),
relatedCategories: value.get('categories'),
platform: value.get('platform'),
))
});
});
return listCards;
}
Вот изображение структуры моей базы данных: введите здесь описание изображения