fix paginacao
This commit is contained in:
parent
7b0297a491
commit
b1a09d999c
|
@ -20,27 +20,30 @@ class _VehicleHistoryScreenState extends State<VehicleHistoryScreen>
|
|||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
_pagingController.addPageRequestListener(
|
||||
(dynamic pageKey) => fetchPage(
|
||||
(int pageKey) => fetchPage(
|
||||
dataProvider: () async {
|
||||
final newItems = await apiCall.call(pageKey.toString());
|
||||
if (newItems.jsonBody == null) return (false, null);
|
||||
final List<dynamic> vehicles =
|
||||
(newItems.jsonBody['vehicles'] as List<dynamic>?) ?? [];
|
||||
_pagingController.nextPageKey = pageKey + 1;
|
||||
|
||||
safeSetState(() {
|
||||
count = newItems.jsonBody['total_rows'] ?? 0;
|
||||
});
|
||||
|
||||
return (vehicles.isNotEmpty, vehicles);
|
||||
},
|
||||
onDataUnavailable: () {
|
||||
onDataUnavailable: (vehicles) {
|
||||
setState(() {});
|
||||
|
||||
showNoMoreDataSnackBar(context);
|
||||
_pagingController.appendLastPage(vehicles);
|
||||
},
|
||||
onDataAvailable: (vehicles) {
|
||||
setState(() {});
|
||||
_pagingController.appendLastPage(vehicles);
|
||||
_pagingController.appendPage(vehicles, pageKey + 1);
|
||||
},
|
||||
onFetchError: (e, s) {
|
||||
DialogUtil.errorDefault(context);
|
||||
|
|
|
@ -32,8 +32,8 @@ mixin Pageable<T extends StatefulWidget> on State<T> {
|
|||
buildLoadingIndicator(context),
|
||||
noItemsFoundIndicatorBuilder: (context) =>
|
||||
buildNoDataFound(context, noDataFound),
|
||||
firstPageErrorIndicatorBuilder: (context) => const Placeholder(),
|
||||
newPageErrorIndicatorBuilder: (context) => const Placeholder(),
|
||||
// firstPageErrorIndicatorBuilder: (context) => const Placeholder(),
|
||||
// newPageErrorIndicatorBuilder: (context) => const Placeholder(),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -43,15 +43,17 @@ mixin Pageable<T extends StatefulWidget> on State<T> {
|
|||
Future<void> fetchPage({
|
||||
required Future<(bool, dynamic)> Function() dataProvider,
|
||||
required void Function(dynamic data) onDataAvailable,
|
||||
required void Function() onDataUnavailable,
|
||||
required void Function(dynamic data) onDataUnavailable,
|
||||
required void Function(Object error, StackTrace stackTrace) onFetchError,
|
||||
}) async {
|
||||
try {
|
||||
print('develop ->');
|
||||
final (bool isDataAvailable, dynamic data) = await dataProvider();
|
||||
print('develop -> $isDataAvailable');
|
||||
if (isDataAvailable) {
|
||||
onDataAvailable(data);
|
||||
} else {
|
||||
onDataUnavailable();
|
||||
onDataUnavailable(data);
|
||||
}
|
||||
} catch (error, stackTrace) {
|
||||
onFetchError(error, stackTrace);
|
||||
|
|
Loading…
Reference in New Issue