ClientModal function
void
ClientModal(
- dynamic context,
- Client client,
- dynamic callback,
- Map permissions,
)
Implementation
void ClientModal(context, Client client, callback, Map permissions) {
bool isNew = client.isEmpty();
bool isDeleting = false;
bool isEnableForm = isNew;
void confirm(String action, Client client) {
try {
Navigator.of(context).pop();
callback(action, client);
} catch(error) {
showSnackBar(context, SnackType.error, error.toString());
}
}
void callbackUpdate(action, app, setStateModal){
action == 'cancel' ? setStateModal(() => isEnableForm = isNew)
: action == 'enableForm' ? setStateModal(()=>isEnableForm = true)
: action == 'confirmDelete' ? setStateModal(()=>isDeleting = true)
: confirm(action, app);
}
Widget child = StatefulBuilder(
builder: (BuildContext context, StateSetter setStateModal ) {
return isDeleting
? ContentConfirmDelete(
title: 'Eliminar ${client.name ?? ''}',
message: 'Tenga en cuenta que al eliminar a esta cliente también serán eliminados los datos asociados.',
onCancel: ()=>setStateModal(() { isDeleting = false; }),
onConfirm: ()=>confirm('delete', client)
)
: isEnableForm
? ClientCreate(client, (action, client)=>callbackUpdate(action, client, setStateModal), permissions)
: ClientShow(client, (action, client)=>callbackUpdate(action, client, setStateModal), permissions);
}
);
customAutoDialog(context, child);
}