PersonModal function
void
PersonModal(
- dynamic context, {
- required String entity,
- required Person person,
- required Function callback,
- required Map permissions,
- required DefaultProvider defaultProvider,
- required ApiProvider apiProvider,
Implementation
void PersonModal(
context, {
required String entity,
required Person person,
required Function callback,
required Map permissions,
required DefaultProvider defaultProvider,
required ApiProvider apiProvider
}) {
bool isNew = person.isEmpty();
bool isDeleting = false;
bool isEnableForm = isNew;
void confirm(String action, Person person) {
try {
Navigator.of(context).pop();
callback(action, person);
} 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 ${person.name ?? ''}',
message: 'Tenga en cuenta que al eliminar a esta (empresa ó persona) también serán eliminados los datos asociados.',
onCancel: ()=>setStateModal(() { isDeleting = false; }),
onConfirm: ()=>confirm('delete', person)
)
: isEnableForm
? PersonCreate(
entity: entity,
currentPerson: person,
callback: (action, person)=>callbackUpdate(action, person, setStateModal),
permissions: permissions,
defaultProvider: defaultProvider,
apiProvider: apiProvider
)
: PersonShow(
entity: entity,
currentPerson: person,
callback: (action, person)=>callbackUpdate(action, person, setStateModal),
permissions: permissions
);
}
);
customAutoDialog(context, child);
}