xCMD_xOnAddDett method
Implementation
Future xCMD_xOnAddDett() async {
var x = await xInitList_AddDetts();
var t;
if (x.length == 1) {
var p = xTabs.value.firstWhereOrNull((element) => element.key == x.first.key);
if (p == null)
xTabs_ChangeActive(x.first.key, forceAdd: true);
else
xTabs_ChangeActive(x.first.key);
t = x.first.key;
} else {
var p = xTab_Active != null ? xTabs.value.firstWhereOrNull((element) => element.key == xTab_Active!.key) : null;
if (p != null) {
t = p.key;
xTabs_ChangeActive(t);
} else {
t = await showDialog(
context: context,
builder: (context) {
return XAlertDialog(
height: null,
title_Text: "Scegli quale dettaglio aggiungere:",
actionsBTNarea_Child: Row(children: [
Expanded(
child: XBtnbase(
label: "Chiudi",
backGroundColor: Colors.grey[800],
label_Style: XStyles.xStyTextForLabel(textColor: XColors.undo),
onPressed: () => Navigator.pop(context, null),
))
]),
title_Style: XStyles.xStyTextForTextBase(),
child: Column(
mainAxisSize: MainAxisSize.min,
children: x
.map((e) => Row(children: [
Expanded(
child: XBtnbase(
margin: EdgeInsets.symmetric(vertical: 5),
label: e.label,
backGroundColor: Colors.grey[800],
height: 35,
onPressed: () {
var x = xTabs.value.firstWhereOrNull((element) => element.key == e.key);
if (x == null)
xTabs_ChangeActive(e.key, forceAdd: true);
else
xTabs_ChangeActive(e.key);
Navigator.pop(context, e.key);
},
label_Style: XStyles.xStyTextForSubLabel(textColor: e.backgroundColor),
))
]))
.toList()));
});
}
}
if (t != null && t != "" && t == xTab_Active!.key) {
var xclObject = xTab_Active!.itemClass!.getCloneFull();
await xOnAddNewDett_setData_INTERNAL(xclObject);
bool resDlg = false;
if (xIsActive_AddItem_DefaultBL) {
if (xTab_Active != null && xTab_Active!.xElencoToView != null && xTab_Active!.xElencoToView!.xCells_EditType != null) {
if (xTab_Active!.xElencoToView!.xCells_EditType!.value == XEnums.editType.scheda.value) {
resDlg = await xOnBefore_AddDett(xclObject).then((value) {
if (value) {
xOnAfterActionOnDett_INTERNAL(xclObject);
return true;
} else
return false;
});
} else {
// FORM-xPreview_Dialog
if (xTab_Active!.xElencoToView!.xCells_EditType!.value == XEnums.editType.form.value) {
var _view = XView("AddView");
_view.cols.addAll(xTab_Active!.xElencoToView!.liCols_EditData ?? []);
await xOnBefore_AddDett(xclObject);
resDlg = await xPreview_Dialog(xTab_Active!.xElencoToView!.liCols_EditData!.isEmpty ? xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view ?? xTab_Active!.xElencoToView!.viewDetts! : _view, xclObject, isWeb: kIsWeb);
} else if (xTab_Active!.xElencoToView!.xCells_EditType!.value == XEnums.editType.stepByStep.value) {
var _view = XView("AddView");
_view.cols.addAll(xTab_Active!.xElencoToView!.liCols_EditData ?? []);
await xOnBefore_AddDett(xclObject);
resDlg = await xEditDialog_xOnAddItem(xTab_Active!.xElencoToView!.liCols_EditData!.isEmpty ? xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view ?? xTab_Active!.xElencoToView!.viewDetts! : _view, xclObject, setState);
} else {
if (xTab_Active!.xElencoToView!.isEditable) {
xOnAfterActionOnDett_INTERNAL(xclObject);
} else {
var _view = XView("AddView");
_view.cols.addAll(xTab_Active!.xElencoToView!.liCols_EditData ?? []);
await xOnBefore_AddDett(xclObject);
resDlg = await xEditDialog_xOnAddItem(xTab_Active!.xElencoToView!.liCols_EditData!.isEmpty ? xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view ?? xTab_Active!.xElencoToView!.viewDetts! : _view, xclObject, setState);
}
}
if (resDlg) {
await xOnAfter_AddDett(xclObject);
xOnAfterActionOnDett_INTERNAL(xclObject);
}
}
} else {
if (widget.xOnBeforeAddDettLayout != null) {
resDlg = await widget.xOnBeforeAddDettLayout!(xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view!, xclObject, setState);
} else {
resDlg = await xLayout_DialogAddItem(xTab_Active!.xElencoToView!.xView_ForEditItem ?? xTab_Active!.xElencoToView!.view!, xclObject, setState);
}
}
}
bool xOnBeforeAddDettToList_Custom_Result = false;
bool resBeforeAddItemInList = false;
if (resDlg || xIsActive_AddItem_DefaultBL.not()) {
resBeforeAddItemInList = await xOnBeforeAddDettToList(xclObject);
if (resBeforeAddItemInList.not()) {
xOnBeforeAddDettToList_Custom_Result = await xOnBeforeAddDettToList_Custom(xclObject);
}
// editedPage.value = true; //x ADD
}
if (resDlg || xOnBeforeAddDettToList_Custom_Result || resBeforeAddItemInList) {
//prendo da padre la lista in cui add il dett
var x = xTabs.value.firstWhereOrNull((element) => element.key == xTab_Active!.key);
if (resDlg || resBeforeAddItemInList) {
var liToAddTheItem = itemInEdit_Clone.getProp(t);
liToAddTheItem.add(xclObject);
}
// attivo il tab relativo al tiupo di dett che si sta aggiungendo
if (x != null) {
xTab_CurrentIndex = x.idx;
} else {
xTab_CurrentIndex = xTab_Active!.idx;
}
//refresh UI
widget.key_Rows = UniqueKey();
widget.key_Head = UniqueKey();
xOnAfterActionOnDett_INTERNAL(xclObject);
}
}
}