xEditDialog method

Future xEditDialog(
  1. XFDataItem item,
  2. String title,
  3. dynamic value,
  4. XCol xCol, {
  5. List<ScontiBTN>? liSconti,
  6. bool btns_Active = true,
})

Dialog per l'editing dei campi con i vari pulsanti di help

Implementation

Future<dynamic> xEditDialog(XFDataItem item, String title, dynamic value, XCol xCol, {List<ScontiBTN>? liSconti, bool btns_Active = true}) async {
  XFDataItem itemClone = item.getCloneFull();
  FocusScope.of(context).unfocus();
  TextEditingController textController = TextEditingController(
      text: itemClone[xCol.colKey].runtimeType != DateTime
          ? itemClone[xCol.colKey].toString()
          : itemClone[xCol.colKey] != null
              ? XUtils.dateToString(itemClone[xCol.colKey], format: "dd/MM/yyyy", noDateLabel: "")
              : XUtils.dateToString(DateTime.now(), format: "dd/MM/yyyy", noDateLabel: ""));
  if (enteredInEditOnCell.not()) setState(() => enteredInEditOnCell = true);
  var clipboard_isFull = await Clipboard.getData("text/plain");
  var res = await showDialog<dynamic>(
      context: context,
      barrierDismissible: false,
      barrierColor: Colors.black.withAlpha(230),
      builder: (context) {
        return StatefulBuilder(builder: (context, setState) {
          return Container(
              width: kIsWeb ? MediaQuery.of(context).size.width / 2 : MediaQuery.of(context).size.width - 10,
              alignment: Alignment.center,
              child: SingleChildScrollView(
                  child: XAlertDialog(
                      colorBackGround: XSchedaState.color_BackGround_EditDialog,
                      actionsBTNarea_Padding: EdgeInsets.symmetric(horizontal: 5),
                      content_insetPadding: EdgeInsets.all(2),
                      width: kIsWeb ? MediaQuery.of(context).size.width / 2 : MediaQuery.of(context).size.width - 10,
                      content_VerticalPadding: 2,
                      height: null,
                      title_Text: title,
                      title_Style: XStyles.xStyTextForLabel(textColor: Colors.blue),
                      btnNO_OnPressed: () => Navigator.pop(context, null),
                      actionsBTNarea_Child: Container(
                          padding: EdgeInsets.only(bottom: 10),
                          child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
                            XBtnbase(
                              width: 120,
                              label: "Annulla",
                              label_Style: XStyles.xStyTextForSubLabel(textColor: Colors.red),
                              backGroundColor: Colors.red.withAlpha(60),
                              onPressed: () => Navigator.pop(context, null),
                            ),
                            SizedBox(width: 10),
                            XBtnbase(
                                width: 120,
                                label: "OK",
                                label_Style: XStyles.xStyTextForSubLabel(textColor: Colors.green),
                                backGroundColor: Colors.green.withAlpha(60),
                                onPressed: () {
                                  if (value != textController.text) setState(() => editedPage.value = true);
                                  if (xCol.dataType == String && xCol.colKey.startsWith("li").not()) {
                                    value = textController.text;
                                  } else if (xCol.dataType == DateTime) {
                                    value = itemClone[xCol.colKey];
                                  } else if (xCol.dataType == double) {
                                    if (textController.text != "") {
                                      value = double.parse(textController.text);
                                    } else {
                                      value = 0.0;
                                    }
                                  } else if (xCol.dataType == int) {
                                    if (textController.text != "") {
                                      value = int.parse(textController.text);
                                    } else {
                                      value = 0;
                                    }
                                  }
                                  // lo fa giĆ  xOnXCell_Edit_SubmitValue
                                  xOnXCell_Edit_SubmitValue_INTERNAL(item, xCol, value);
                                  Navigator.pop(context, value);
                                })
                          ])),
                      child: xEditDialog_Override_Editor(xCol.colCaption, value, xCol, textController, item: itemClone) != null
                          ? xEditDialog_Override_Editor(xCol.colCaption, value, xCol, textController, item: itemClone)
                          : (xCol.dataType == String && xCol.colKey.startsWith("li").not() && xCol.dataType != DateTime && (xCol.colKey.contains("sconti") || xCol.colKey.contains("sconto")))
                              ? xEditDialog_Sconto(itemClone, xCol, textController, setState, liSconti: liSconti)
                              : Column(mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [
                                  SizedBox(height: 3),
                                  (xCol.dataType == String && xCol.colKey.startsWith("li").not() && (xCol.colKey.contains("sconti") || xCol.colKey.contains("sconto")))
                                      ? Row(mainAxisAlignment: MainAxisAlignment.center, children: [
                                          Expanded(child: xEditDialog_CellBuilder(itemClone, xCol, context, setState, textController)),
                                          SizedBox(width: 10),
                                          builderXEditDialog_BTNs(itemClone, textController, "C", false, setState),
                                        ])
                                      : xCol.dataType == String && xCol.colKey.startsWith("li").not()
                                          ? Column(mainAxisAlignment: MainAxisAlignment.center, children: [
                                              Row(children: [Expanded(child: xEditDialog_CellBuilder(itemClone, xCol, context, setState, textController))]),
                                              SizedBox(height: 10),
                                              Row(mainAxisAlignment: MainAxisAlignment.end, children: [
                                                clipboard_isFull != null
                                                    ? XBtnbase(
                                                        width: 60,
                                                        label: "Incolla",
                                                        label_TextAlign: TextAlign.center,
                                                        label_Color: Colors.white,
                                                        padding: EdgeInsets.all(0),
                                                        backGroundColor: Colors.grey[700],
                                                        onPressed: () async {
                                                          await Clipboard.getData("text/plain").then((value) => textController.text += " " + (value != null ? (value.text ?? "") : ""));
                                                          ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Testo incollato dagli appunti')));
                                                        })
                                                    : Container(),
                                                SizedBox(width: 20),
                                                XBtnbase(
                                                    width: 60,
                                                    label: "Copia \nTutto",
                                                    label_TextAlign: TextAlign.center,
                                                    label_Color: Colors.white,
                                                    padding: EdgeInsets.all(0),
                                                    backGroundColor: Colors.grey[700],
                                                    onPressed: () {
                                                      Clipboard.setData(ClipboardData(text: textController.text));
                                                      ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Testo copiato negli appunti')));
                                                    }),
                                                SizedBox(width: 20),
                                                builderXEditDialog_BTNs(itemClone, textController, "C", false, setState),
                                              ])
                                            ])
                                          : xCol.dataType == DateTime
                                              ? Row(mainAxisAlignment: MainAxisAlignment.center, children: [Expanded(child: xEditDialog_CellBuilder(itemClone, xCol, context, setState, textController))]) //
                                              : Row(mainAxisAlignment: MainAxisAlignment.center, children: [
                                                  Expanded(child: xEditDialog_CellBuilder(itemClone, xCol, context, setState, textController)),
                                                  SizedBox(width: 10),
                                                  builderXEditDialog_BTNs(itemClone, textController, "C", false, setState),
                                                ]),
                                  SizedBox(height: 10),
                                  btns_Active && ((xCol.dataType == String).not() && xCol.dataType != DateTime)
                                      ? Row(mainAxisAlignment: MainAxisAlignment.center, children: [
                                          Expanded(
                                              child: Wrap(alignment: WrapAlignment.end, spacing: 8, runSpacing: 8, children: [
                                            builderXEditDialog_BTNs(itemClone, textController, "+20", false, setState, xCol: xCol),
                                            builderXEditDialog_BTNs(itemClone, textController, "+10", false, setState, xCol: xCol),
                                            builderXEditDialog_BTNs(itemClone, textController, "+5", false, setState, xCol: xCol),
                                            builderXEditDialog_BTNs(itemClone, textController, "+3", false, setState, xCol: xCol),
                                            xCol.dataType == String && xCol.colKey.startsWith("li").not() ? Container() : builderXEditDialog_BTNs(itemClone, textController, "+1", false, setState, xCol: xCol),
                                          ]))
                                        ])
                                      : Container(),
                                ]))));
        });
      });
  return res;
}