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