xEditDialog method

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

EditDialog per la modifica di un singolo campo

Implementation

Future<dynamic> xEditDialog(XFDataItem item, String title, dynamic value, XCol xCol, {List<ScontiBTN>? liSconti}) async {
  FocusScope.of(context).unfocus();
  TextEditingController textController = TextEditingController(text: item[xCol.colKey].runtimeType != DateTime ? item[xCol.colKey].toString() : XUtils.dateToString(item[xCol.colKey], format: "dd/MM/yyyy", noDateLabel: ""));
  var res = await showDialog<dynamic>(
      context: context,
      barrierDismissible: false,
      builder: (context) {
        return StatefulBuilder(builder: (context, setState) {
          return Container(
              width: 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),
                      height: null,
                      title_Text: title,
                      title_Style: XStyles.xStyTextForLabel(textColor: Colors.blue),
                      btnYES_label: "OK",
                      btnNO_label: "Annulla",
                      btnNO_OnPressed: () => Navigator.pop(context, null),
                      btnYES_OnPressed: () {
                        if (value != textController.text) {}
                        if (xCol.dataType == String && xCol.colKey.startsWith("li").not()) {
                          value = textController.text;
                        } else if (xCol.dataType == DateTime) {
                          value = DateTime.parse(textController.text);
                        } else if (xCol.dataType == double) {
                          value = double.parse(textController.text);
                        } else if (xCol.dataType == int) {
                          value = int.parse(textController.text);
                        }

                        // 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: item) != null
                          ? xEditDialog_Override_Editor(xCol.colCaption, value, xCol, textController, item: item)
                          : (xCol.dataType == String && xCol.colKey.startsWith("li").not() && xCol.dataType != DateTime && (xCol.colKey.contains("sconti") || xCol.colKey.contains("sconto")))
                              ? Container()
                              : Column(mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [
                                  SizedBox(height: 10),
                                  (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(item, xCol, context, setState, textController)),
                                          SizedBox(width: 10),
                                          xEditDialog_Builder_BTNs(item, textController, "C", false, setState),
                                        ])
                                      : xCol.dataType == String && xCol.colKey.startsWith("li").not()
                                          ? Column(mainAxisAlignment: MainAxisAlignment.center, children: [
                                              Row(children: [Expanded(child: xEditDialog_CellBuilder(item, xCol, context, setState, textController))]),
                                              SizedBox(height: 10),
                                              Row(mainAxisAlignment: MainAxisAlignment.end, children: [
                                                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),
                                                xEditDialog_Builder_BTNs(item, textController, "C", false, setState),
                                              ])
                                            ])
                                          : xCol.dataType == DateTime
                                              ? Row(mainAxisAlignment: MainAxisAlignment.center, children: [Expanded(child: xEditDialog_CellBuilder(item, xCol, context, setState, textController))])
                                              : Row(mainAxisAlignment: MainAxisAlignment.center, children: [
                                                  Expanded(child: xEditDialog_CellBuilder(item, xCol, context, setState, textController)),
                                                  SizedBox(width: 10),
                                                  xEditDialog_Builder_BTNs(item, textController, "C", false, setState),
                                                ]),
                                  SizedBox(height: 10),
                                  ((xCol.dataType == String).not() && xCol.dataType != DateTime)
                                      ? Row(mainAxisAlignment: MainAxisAlignment.center, children: [
                                          Expanded(
                                              child: Wrap(alignment: WrapAlignment.end, spacing: 8, runSpacing: 8, children: [
                                            xEditDialog_Builder_BTNs(item, textController, "+20", false, setState, xCol: xCol),
                                            xEditDialog_Builder_BTNs(item, textController, "+10", false, setState, xCol: xCol),
                                            xEditDialog_Builder_BTNs(item, textController, "+5", false, setState, xCol: xCol),
                                            xEditDialog_Builder_BTNs(item, textController, "+3", false, setState, xCol: xCol),
                                            xCol.dataType == String && xCol.colKey.startsWith("li").not() ? Container() : xEditDialog_Builder_BTNs(item, textController, "+1", false, setState, xCol: xCol),
                                          ]))
                                        ])
                                      : Container()
                                ]))));
        });
      });
  return res;
}