getPage<T> method
Implementation
@override
Future<PagyPage<T>> getPage<T>(PagyPageParams<T> params) async {
final response = await _remote.getPaginatedData(
PagyParams(
endPoint: params.endPoint,
requestType: params.requestType,
page: params.page,
limit: params.limit,
queryParameter: params.queryParameter,
additionalQueryParams: params.additionalQueryParams,
payloadData: params.payloadData,
token: params.token,
headers: params.headers,
cancelToken: params.cancelToken,
paginationMode: params.paginationMode,
fromMap: params.fromMap,
),
);
if (response.data == null || response.data is! Map<String, dynamic>) {
throw PagyError.malformedResponse(
message: 'Response format is invalid',
);
}
final parsed = params.responseParser(response.data as Map<String, dynamic>);
final parsedList = parsed.list;
final List<T> items = [];
for (int i = 0; i < parsedList.length; i++) {
try {
items.add(params.fromMap(parsedList[i] as Map<String, dynamic>));
} catch (e) {
throw PagyError.malformedResponse(
message: 'Parsing error on item $i. Please check your model or keys.',
);
}
}
return PagyPage<T>(
items: items,
totalPages: parsed.totalPages,
);
}