fix: pagination in registerCompleteVisit
This commit is contained in:
parent
c1f76c4be3
commit
ccc4d4c717
|
@ -83,7 +83,6 @@ class _VisitRequestTemplateComponentWidgetState
|
|||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(height: MediaQuery.of(context).size.height * 0.02),
|
||||
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.3,
|
||||
height: MediaQuery.of(context).size.width * 0.3,
|
||||
|
|
|
@ -22,47 +22,59 @@ class VisitHistoryWidget extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _VisitHistoryWidgetState extends State<VisitHistoryWidget> {
|
||||
late Future<ApiCallResponse> visitFuture;
|
||||
List<dynamic> visitaWrap = [];
|
||||
var pageNumber = 1;
|
||||
late Future<void> visitFuture;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
// Inicialização inicial
|
||||
visitFuture = ScheduleCompleteVisitPageModel().visitHistory(
|
||||
requestFn: () => PhpGroup.getVisitsCall.call(
|
||||
devUUID: FFAppState().devUUID,
|
||||
userUUID: FFAppState().userUUID,
|
||||
cliID: FFAppState().cliUUID,
|
||||
atividade: 'getVisitas',
|
||||
pageSize: 100,
|
||||
pageNumber: pageNumber,
|
||||
),
|
||||
);
|
||||
visitFuture = _fetchVisits();
|
||||
}
|
||||
|
||||
void updateVisitFuture() {
|
||||
// Atualização do valor da variável late
|
||||
setState(() {
|
||||
visitFuture = ScheduleCompleteVisitPageModel().visitHistory(
|
||||
Future<ApiCallResponse?> _fetchVisits() async {
|
||||
try {
|
||||
var response = await ScheduleCompleteVisitPageModel().visitHistory(
|
||||
requestFn: () => PhpGroup.getVisitsCall.call(
|
||||
devUUID: FFAppState().devUUID,
|
||||
userUUID: FFAppState().userUUID,
|
||||
cliID: FFAppState().cliUUID,
|
||||
atividade: 'getVisitas',
|
||||
pageSize: 100,
|
||||
pageSize: 10,
|
||||
pageNumber: pageNumber,
|
||||
),
|
||||
);
|
||||
|
||||
log('API response: ${response.jsonBody}');
|
||||
|
||||
var newVisits = response.jsonBody['visitas']
|
||||
as List<dynamic>?; // Ajuste conforme a estrutura da resposta
|
||||
if (newVisits != null && newVisits.isNotEmpty) {
|
||||
setState(() {
|
||||
visitaWrap.addAll(newVisits);
|
||||
});
|
||||
return response;
|
||||
} else {
|
||||
log('No new visits found');
|
||||
return null;
|
||||
}
|
||||
} catch (err) {
|
||||
log('Erro ao carregar mais visitas: $err');
|
||||
}
|
||||
}
|
||||
|
||||
void _loadMoreVisits() {
|
||||
pageNumber++;
|
||||
visitFuture = _fetchVisits();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return FutureBuilder<dynamic>(
|
||||
return FutureBuilder<void>(
|
||||
future: visitFuture,
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting &&
|
||||
visitaWrap.isEmpty) {
|
||||
return Center(
|
||||
child: CircularProgressIndicator(
|
||||
valueColor: AlwaysStoppedAnimation<Color>(
|
||||
|
@ -72,26 +84,38 @@ class _VisitHistoryWidgetState extends State<VisitHistoryWidget> {
|
|||
);
|
||||
} else if (snapshot.hasError) {
|
||||
return Center(child: Text('Error: ${snapshot.error}'));
|
||||
} else if (!snapshot.hasData || snapshot.data!.jsonBody == null) {
|
||||
} else if (visitaWrap.isEmpty) {
|
||||
return Center(
|
||||
child: Text(FFLocalizations.of(context).getVariableText(
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Nenhum visitante foi encontrado',
|
||||
enText: 'No visitors found',
|
||||
)));
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
var wrapGetVisitsResponse = snapshot.data!;
|
||||
var visitaWrap = PhpGroup.getVisitsCall
|
||||
.visitasList(wrapGetVisitsResponse.jsonBody)
|
||||
?.toList() ??
|
||||
[];
|
||||
log('[A] - ${visitaWrap.length.toString()}');
|
||||
|
||||
return ListView.builder(
|
||||
itemCount: visitaWrap.length,
|
||||
itemCount: visitaWrap.length + 1,
|
||||
shrinkWrap: true,
|
||||
physics: const BouncingScrollPhysics(),
|
||||
itemBuilder: (context, index) {
|
||||
if (index == visitaWrap.length) {
|
||||
_loadMoreVisits();
|
||||
return Center(
|
||||
child: CircularProgressIndicator(
|
||||
valueColor: AlwaysStoppedAnimation<Color>(
|
||||
FlutterFlowTheme.of(context).primary,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
final visitaWrapItem = visitaWrap[index];
|
||||
log('[B] - ${visitaWrap.length.toString()}');
|
||||
|
||||
return CardItemTemplateComponentWidget(
|
||||
imagePath:
|
||||
'https://freaccess.com.br/freaccess/getImage.php?devUUID=${FFAppState().devUUID}&userUUID=${FFAppState().userUUID}&cliID=${FFAppState().cliUUID}&atividade=getFoto&Documento=${visitaWrapItem['VTE_DOCUMENTO'] ?? ''}&tipo=E',
|
||||
|
@ -160,7 +184,16 @@ class _VisitHistoryWidgetState extends State<VisitHistoryWidget> {
|
|||
},
|
||||
).whenComplete(() {
|
||||
log('Dialog closed');
|
||||
updateVisitFuture();
|
||||
// updateVisitFuture();
|
||||
_fetchVisits().then((response) {
|
||||
safeSetState(() {
|
||||
visitaWrap = PhpGroup.getVisitsCall
|
||||
.visitasList(response!.jsonBody)
|
||||
?.toList() ??
|
||||
[];
|
||||
visitFuture = Future.value(response);
|
||||
});
|
||||
});
|
||||
}).catchError((err, stack) {});
|
||||
},
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue