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