xEditDialog method
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] == null
? ""
: 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;
}