This commit is contained in:
jantunesmesias 2024-08-22 14:42:23 -03:00
parent 248dbd6bdd
commit 0aa9648616
2 changed files with 66 additions and 84 deletions

View File

@ -373,47 +373,54 @@ Future<bool> checkLocals({
required HomePageModel model, required HomePageModel model,
required void Function(void Function()) safeSetState, required void Function(void Function()) safeSetState,
}) async { }) async {
// A chamada para a API permanece a mesma, assumindo que é necessária sempre. bool itemFound = false;
final response = await PhpGroup.getLocalsCall.call( var modalResult;
devUUID: AppState().devUUID,
userUUID: AppState().userUUID,
);
// Verificação rápida de erro para evitar processamento desnecessário. do {
if (response.jsonBody['error']) { // A chamada para a API permanece a mesma, assumindo que é necessária sempre.
return false; final response = await PhpGroup.getLocalsCall.call(
} devUUID: AppState().devUUID,
userUUID: AppState().userUUID,
// Uso eficiente de coleções para verificar a condição desejada.
final String uuid = cliUUID ?? AppState().cliUUID;
final bool itemFound = response.jsonBody['locais'].any(
(local) => local['CLI_ID'] == uuid && local['CLU_STATUS'] == "A",
);
// Log e retorno condicional baseado no resultado da busca.
if (itemFound) {
return true;
} else {
// A chamada para showModalBottomSheet permanece, mas a atualização da UI é otimizada.
await showModalBottomSheet(
isScrollControlled: true,
backgroundColor: Colors.transparent,
enableDrag: false,
context: context,
builder: (context) => GestureDetector(
onTap: () => model.unfocusNode.canRequestFocus
? FocusScope.of(context).requestFocus(model.unfocusNode)
: FocusScope.of(context).unfocus(),
child: Padding(
padding: MediaQuery.viewInsetsOf(context),
child: const BottomArrowLinkedLocalsComponentWidget(),
),
),
); );
safeSetState(
() {}); // Chamada otimizada fora do then para evitar encadeamentos desnecessários. // Verificação rápida de erro para evitar processamento desnecessário.
return false; if (response.jsonBody['error']) {
} return false;
}
// Uso eficiente de coleções para verificar a condição desejada.
final String uuid = cliUUID ?? AppState().cliUUID;
itemFound = response.jsonBody['locais'].any(
(local) => local['CLI_ID'] == uuid && local['CLU_STATUS'] == "A",
);
// Log e retorno condicional baseado no resultado da busca.
if (itemFound) {
return true;
} else {
// A chamada para showModalBottomSheet permanece, mas a atualização da UI é otimizada.
modalResult = await showModalBottomSheet(
isScrollControlled: true,
backgroundColor: Colors.transparent,
enableDrag: false,
isDismissible: false,
context: context,
builder: (context) => GestureDetector(
onTap: () => model.unfocusNode.canRequestFocus
? FocusScope.of(context).requestFocus(model.unfocusNode)
: FocusScope.of(context).unfocus(),
child: Padding(
padding: MediaQuery.viewInsetsOf(context),
child: const BottomArrowLinkedLocalsComponentWidget(),
),
),
);
safeSetState(
() {}); // Chamada otimizada fora do then para evitar encadeamentos desnecessários.
}
} while (modalResult != true);
return false;
} }
Future answersRequest(BuildContext context, String? ref, String? task, Future answersRequest(BuildContext context, String? ref, String? task,

View File

@ -41,51 +41,26 @@ class _HomePageWidgetState extends State<HomePageWidget> {
void fetchData() async { void fetchData() async {
bool success = false; bool success = false;
while (!success) { while (!success) {
await PhpGroup.getDadosCall final response = await PhpGroup.getDadosCall.call(
.call( devUUID: AppState().devUUID,
devUUID: AppState().devUUID, userUUID: AppState().userUUID,
userUUID: AppState().userUUID, cliUUID: AppState().cliUUID,
cliUUID: AppState().cliUUID, atividade: 'getDados',
atividade: 'getDados') );
.then((value) async {
switch (value.statusCode) { switch (response.statusCode) {
case 200: case 200:
if (value.jsonBody['error'] == false) { if (response.jsonBody['error'] == false) {
success = true; success = true;
AppState().whatsapp = value.jsonBody['whatsapp']; AppState().whatsapp = response.jsonBody['whatsapp'];
AppState().provisional = value.jsonBody['provisional']; AppState().provisional = response.jsonBody['provisional'];
} else if (value.jsonBody['error_msg'] == }
'O seu vinculo nao esta ativo.') { break;
success = true; default:
showModalBottomSheet( await DialogUtil.warningDefault(context);
isScrollControlled: true, safeSetState(() {});
backgroundColor: Colors.transparent, break;
enableDrag: false, }
isDismissible: false,
context: context,
builder: (context) {
return GestureDetector(
onTap: () => _model.unfocusNode.canRequestFocus
? FocusScope.of(context)
.requestFocus(_model.unfocusNode)
: FocusScope.of(context).unfocus(),
child: Padding(
padding: MediaQuery.viewInsetsOf(context),
child: const BottomArrowLinkedLocalsComponentWidget(),
),
);
},
).then((value) => safeSetState(() {
success = true;
}));
}
break;
default:
await DialogUtil.warningDefault(context);
safeSetState(() {});
break;
}
});
} }
} }