PersonModal function

void PersonModal(
  1. dynamic context, {
  2. required String entity,
  3. required Person person,
  4. required Function callback,
  5. required Map permissions,
  6. required DefaultProvider defaultProvider,
  7. 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);
}