xLayout_DialogAddItem method

Future<bool> xLayout_DialogAddItem(
  1. XView xView,
  2. XFDataItem item,
  3. void setState(
    1. void ()
    ), {
  4. List<ScontiBTN>? liSconti,
})

Gestione dell'aggiunta di un Item

Implementation

Future<bool> xLayout_DialogAddItem(XView xView, XFDataItem item, void Function(void Function()) setState, {List<ScontiBTN>? liSconti}) async {
  bool isFirstCanceledCanSkipPreviewDlg = false;
  int u = 0;
  setState(() {
    // enteredInEditOnCell = true;
    widget.key_Head = UniqueKey();
  });
  bool rval = true;
  if (xView.cols.where((e) => e.dataType != bool || e.readOnly != true || e.colKey.startsWith("li").not()).length == 1) {
    isFirstCanceledCanSkipPreviewDlg = false;
  } else {
    for (var i in xView.cols) {
      if (i.dataType == bool || i.readOnly == true || i.colKey.startsWith("li")) continue;
      u++;
      var x = await xEditDialog(item, i.colCaption, item[i.colKey], i, liSconti: liSconti);
      if (x == null) {
        rval = false;

        if (u == 1) {
          isFirstCanceledCanSkipPreviewDlg = true;
        }
        break;
      } else {
        item[i.colKey] = x;
      }
    }
  }
  //ha già messo roba e prima di annullare tutto gli facciamo vedere cosa ha già inserito e può cmq annullare
  if (!isFirstCanceledCanSkipPreviewDlg) rval = await xPreview_Dialog(xView, item);

  setState(() => widget.key_Head = UniqueKey());
  return rval;
}