PaginationResponse<T> class

Generic pagination response wrapper

This class can adapt to different API response formats by using custom extractors for data, total count, and pagination metadata.

Examples:

DummyJSON-style APIs:

final response = PaginationResponse.fromJson(
  json,
  Product.fromJson,
  dataExtractor: (json) => json['products'] as List<dynamic>,
  totalExtractor: (json) => json['total'] as int,
  skipExtractor: (json) => json['skip'] as int,
  limitExtractor: (json) => json['limit'] as int,
);

Standard REST APIs:

final response = PaginationResponse.fromJson(
  json,
  User.fromJson,
  dataExtractor: (json) => json['data'] as List<dynamic>,
  totalExtractor: (json) => json['total'] as int,
);

Constructors

PaginationResponse({required List<T> items, required int total, required int skip, required int limit, required bool isLastPage, dynamic nextPageKey})
const
PaginationResponse.empty()
Creates an empty PaginationResponse
factory
PaginationResponse.fromCursorBased(Map<String, dynamic> json, T itemFromJson(Map<String, dynamic>), {String dataKey = 'data', String paginationKey = 'pagination', String nextCursorKey = 'next_cursor', String hasMoreKey = 'has_more'})
Creates a PaginationResponse for cursor-based pagination
factory
PaginationResponse.fromDummyJson(Map<String, dynamic> json, T itemFromJson(Map<String, dynamic>), String dataKey)
Creates a PaginationResponse for DummyJSON-style APIs
factory
PaginationResponse.fromJson(Map<String, dynamic> json, T itemFromJson(Map<String, dynamic>), {List dataExtractor(Map<String, dynamic>)?, int totalExtractor(Map<String, dynamic>)?, int skipExtractor(Map<String, dynamic>)?, int limitExtractor(Map<String, dynamic>)?, dynamic nextPageKeyExtractor(Map<String, dynamic>)?})
Creates a PaginationResponse from JSON with custom extractors
factory
PaginationResponse.fromLaravel(Map<String, dynamic> json, T itemFromJson(Map<String, dynamic>))
Creates a PaginationResponse for Laravel-style pagination
factory
PaginationResponse.fromList(List<T> items)
Creates a single-page PaginationResponse from a list of items
factory
PaginationResponse.fromPageBased(Map<String, dynamic> json, T itemFromJson(Map<String, dynamic>), {String dataKey = 'data', String currentPageKey = 'current_page', String lastPageKey = 'last_page', String perPageKey = 'per_page', String totalKey = 'total'})
Creates a PaginationResponse for page-based pagination
factory

Properties

currentPage → int
The current page number (1-based)
no setter
hashCode → int
The hash code for this object.
no setteroverride
hasNextPage → bool
Whether there are more pages available
no setter
hasPreviousPage → bool
Whether there are previous pages available
no setter
isLastPage → bool
Whether this is the last page
final
itemRange → String
The range of items on the current page (e.g., "1-10 of 100")
no setter
items → List<T>
The list of items for the current page
final
limit → int
Number of items per page
final
nextPageKey → dynamic
Next page key (can be page number, cursor, or offset)
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
skip → int
Current skip/offset value
final
total → int
Total number of items available (across all pages)
final
totalPages → int
The total number of pages
no setter

Methods

copyWith({List<T>? items, int? total, int? skip, int? limit, bool? isLastPage, dynamic nextPageKey}) → PaginationResponse<T>
Returns a copy of this pagination response with updated values
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toJson(Map<String, dynamic> itemToJson(T)) → Map<String, dynamic>
Converts this pagination response to JSON
toString() → String
A string representation of this object.
override

Operators

operator ==(Object other) → bool
The equality operator.
override