ClientModal function

void ClientModal(
  1. dynamic context,
  2. Client client,
  3. dynamic callback,
  4. 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);
}