From b1a09d999c382cc2503365d524e9fa5bccd9092f Mon Sep 17 00:00:00 2001 From: jantunesmessias Date: Thu, 13 Feb 2025 16:54:21 -0300 Subject: [PATCH] fix paginacao --- .../vehicle_history_screen.dart | 11 +++++++---- lib/shared/mixins/pageable_mixin.dart | 10 ++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/pages/vehicles_on_the_property/vehicle_history_screen.dart b/lib/pages/vehicles_on_the_property/vehicle_history_screen.dart index eabf3e37..3cda31bb 100644 --- a/lib/pages/vehicles_on_the_property/vehicle_history_screen.dart +++ b/lib/pages/vehicles_on_the_property/vehicle_history_screen.dart @@ -20,27 +20,30 @@ class _VehicleHistoryScreenState extends State @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 vehicles = (newItems.jsonBody['vehicles'] as List?) ?? []; - _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); diff --git a/lib/shared/mixins/pageable_mixin.dart b/lib/shared/mixins/pageable_mixin.dart index e2cf1493..48c42c7c 100644 --- a/lib/shared/mixins/pageable_mixin.dart +++ b/lib/shared/mixins/pageable_mixin.dart @@ -32,8 +32,8 @@ mixin Pageable on State { 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 on State { Future 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);