AppModal function

void AppModal(
  1. dynamic context,
  2. App app,
  3. dynamic callback,
  4. Map permissions,
)

Implementation

void AppModal(context, App app, callback, Map permissions) {
  bool isNew = app.isEmpty();
  bool isDeleting = false;
  bool isEnableForm = isNew;

  void confirm(String action, App app) {
    try {
      Navigator.of(context).pop();
      callback(action, app);
     } 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 ${app.name ?? ''}',
        message: 'Tenga en cuenta que al eliminar a esta appe también serán eliminados los datos asociados.',
        onCancel: ()=>setStateModal(() { isDeleting = false; }),
        onConfirm: ()=>confirm('delete', app)
      )

      : isEnableForm
      ? AppCreate(app, (action, app)=>callbackUpdate(action, app, setStateModal), permissions)
      : AppShow(app, (action, app)=>callbackUpdate(action, app, setStateModal), permissions);

    }
  );

  customAutoDialog(context, child);
}