fetchModels<T> method
Future<PaginatedResult<T> >
fetchModels<T>({
- required Query<
Object?> query, - required T fromMap(),
- required String collectionName,
- int? limit,
- DocumentSnapshot<
Object?> ? lastDocumentSnapshot,
override
Implementation
@override
Future<PaginatedResult<T>> fetchModels<T>({
required Query query,
required T Function(Map<String, dynamic>) fromMap,
required String collectionName,
int? limit,
DocumentSnapshot? lastDocumentSnapshot,
}) async {
try {
Query finalQuery = query;
if (limit != null) {
finalQuery = finalQuery.limit(limit);
}
if (lastDocumentSnapshot != null) {
finalQuery = finalQuery.startAfterDocument(lastDocumentSnapshot);
}
final snapshot = await finalQuery.get();
final items = snapshot.docs
.map((doc) => fromMap(doc.data() as Map<String, dynamic>))
.toList();
return PaginatedResult(
items: items,
lastDocument: snapshot.docs.isNotEmpty ? snapshot.docs.last : null,
);
} catch (e) {
throw FirebaseException(
plugin: 'firestore',
message: 'Error fetching $collectionName: $e',
);
}
}