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 void Function(void Function()) safeSetState,
}) async {
// A chamada para a API permanece a mesma, assumindo que é necessária sempre.
final response = await PhpGroup.getLocalsCall.call(
devUUID: AppState().devUUID,
userUUID: AppState().userUUID,
);
bool itemFound = false;
var modalResult;
// Verificação rápida de erro para evitar processamento desnecessário.
if (response.jsonBody['error']) {
return false;
}
// 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(),
),
),
do {
// A chamada para a API permanece a mesma, assumindo que é necessária sempre.
final response = await PhpGroup.getLocalsCall.call(
devUUID: AppState().devUUID,
userUUID: AppState().userUUID,
);
safeSetState(
() {}); // Chamada otimizada fora do then para evitar encadeamentos desnecessários.
return false;
}
// Verificação rápida de erro para evitar processamento desnecessário.
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,

View File

@ -41,51 +41,26 @@ class _HomePageWidgetState extends State<HomePageWidget> {
void fetchData() async {
bool success = false;
while (!success) {
await PhpGroup.getDadosCall
.call(
devUUID: AppState().devUUID,
userUUID: AppState().userUUID,
cliUUID: AppState().cliUUID,
atividade: 'getDados')
.then((value) async {
switch (value.statusCode) {
case 200:
if (value.jsonBody['error'] == false) {
success = true;
AppState().whatsapp = value.jsonBody['whatsapp'];
AppState().provisional = value.jsonBody['provisional'];
} else if (value.jsonBody['error_msg'] ==
'O seu vinculo nao esta ativo.') {
success = true;
showModalBottomSheet(
isScrollControlled: true,
backgroundColor: Colors.transparent,
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;
}
});
final response = await PhpGroup.getDadosCall.call(
devUUID: AppState().devUUID,
userUUID: AppState().userUUID,
cliUUID: AppState().cliUUID,
atividade: 'getDados',
);
switch (response.statusCode) {
case 200:
if (response.jsonBody['error'] == false) {
success = true;
AppState().whatsapp = response.jsonBody['whatsapp'];
AppState().provisional = response.jsonBody['provisional'];
}
break;
default:
await DialogUtil.warningDefault(context);
safeSetState(() {});
break;
}
}
}