paginate method

  1. @override
Future<Map<String, dynamic>> paginate({
  1. int perPage = 15,
  2. List<String> columns = const [],
  3. String? pageName,
  4. int? page,
})
inherited

Implementation

@override
Future<Map<String, dynamic>> paginate({
  int perPage = 15,
  List<String> columns = const [],
  String? pageName,
  int? page,
}) async {
  int currentPage = page ?? getParam<int>('page', 1)!;
  int total = await count();
  final lastPage = (total / perPage).ceil();
  final offset = (currentPage - 1) * perPage;
  final pageData = await take(perPage).skip(offset).get(columns);
  final isFirst = currentPage == 1;
  final isLast = currentPage == lastPage;
  final hasMore = currentPage < lastPage;

  return PaginatedResult(
    data: pageData,
    currentPage: currentPage,
    perPage: perPage,
    total: total,
    lastPage: lastPage,
    isFirst: isFirst,
    isLast: isLast,
    hasMore: hasMore,
  ).toMap();
}