readAllPaginated method

  1. @override
Future<PaginatedResult<T>> readAllPaginated(
  1. PaginationConfig config, {
  2. String? userId,
})
override

Fetch a paginated list of items.

Implementation

@override
Future<PaginatedResult<T>> readAllPaginated(PaginationConfig config, {String? userId}) async {
  final all = await readAll(userId: userId);
  final totalCount = all.length;
  final totalPages = config.pageSize == 0 ? 0 : (totalCount / config.pageSize).ceil();
  final currentPage = config.currentPage ?? 1;
  final start = (currentPage - 1) * config.pageSize;
  if (start >= totalCount) {
    return PaginatedResult(items: const [], totalCount: totalCount, currentPage: currentPage, totalPages: totalPages, hasMore: false);
  }
  final end = (start + config.pageSize > totalCount) ? totalCount : start + config.pageSize;
  return PaginatedResult(
    items: all.sublist(start, end),
    totalCount: totalCount,
    currentPage: currentPage,
    totalPages: totalPages,
    hasMore: currentPage < totalPages,
  );
}