buildXItem<T extends XFDataItem, K> method
dynamic
buildXItem<T extends XFDataItem, K>(
- T item,
- List liChildrens,
- dynamic BTNadd_cmdAdd(
- T
- void parentSetState(
- void ()
- Widget dettItem(
- dynamic
- String? BTNadd_label,
- Widget? mainWidget,
- Color? backGround_Color,
- Widget dettWidget(
- dynamic
- EdgeInsetsGeometry? margin,
- List<
XPopUpMenuItem> ? liPopUpMenu_Items, - bool border_Visible = false,
- bool title_InMainWidget_Visible = false,
- XView? xView_Scheda,
- XView? xView_Elenco,
- XView? xViewDett,
- List<
Widget> ? titleLiWidgets, - bool viewDett_Data = false,
Widget per la costruzione di ItemComplessi utilizzati nei Dettagli della Scheda
Implementation
buildXItem<T extends XFDataItem, K>(
T item,
List<dynamic> liChildrens,
Function(T) BTNadd_cmdAdd,
void Function(void Function()) parentSetState, {
Widget Function(dynamic)? dettItem,
String? BTNadd_label,
Widget? mainWidget,
Color? backGround_Color,
Widget Function(dynamic)? dettWidget,
EdgeInsetsGeometry? margin,
List<XPopUpMenuItem>? liPopUpMenu_Items,
bool border_Visible = false,
bool title_InMainWidget_Visible = false,
XView? xView_Scheda,
XView? xView_Elenco,
XView? xViewDett,
List<Widget>? titleLiWidgets,
bool viewDett_Data = false,
}) {
return StatefulBuilder(builder: (context, setState) {
return XElencoItem(setState, item, context, xView_Scheda!,
xViewDetts: xViewDett,
margin: margin ?? EdgeInsets.only(left: 10, right: 10, bottom: 10),
changeStatoWithTap: true,
onTapItem: () => parentSetState(() => item.isShowDetails = item.isShowDetails.not()),
showTrailingArrow: false,
decorationBackGroundContainer: border_Visible
? BoxDecoration(color: backGround_Color ?? Colors.grey[900], border: Border(left: BorderSide(), right: BorderSide(), top: BorderSide(), bottom: BorderSide())) //
: BoxDecoration(color: backGround_Color ?? Colors.grey[900]),
showingDetails: item.isShowDetails,
showMainWithDetails: true,
childMain: Column(mainAxisSize: MainAxisSize.min, children: [
Row(mainAxisAlignment: MainAxisAlignment.end, children: [
mainWidget != null ? Container() : Icon((item.isShowDetails) ? Icons.keyboard_arrow_up_outlined : Icons.keyboard_arrow_down_outlined, color: XColors.foregroundLight),
mainWidget != null
? Container()
: xView_Elenco != null && widget.xHead_Show
? Expanded(child: Row(children: [Expanded(child: Wrap(children: xLayout_Render_HeadView(xView_Elenco, border_Visible: false)))])) //
: Container(),
mainWidget != null ? Expanded(flex: 2, child: mainWidget) : Container(),
Container(margin: EdgeInsets.only(top: 5, right: 5, bottom: 5), child: xLayout_xActionsItem_ViewDett(item, viewDett_Data, setState, xView_Scheda)),
xMedia_isActive ? Container(margin: EdgeInsets.only(top: 5, right: 5, bottom: 5), child: xLayout_xActionsItem_AddMedia(item)) : Container(),
Container(
margin: EdgeInsets.only(top: 5, right: 5, bottom: 5),
child: XBtnbase(
width: 40,
height: 40,
icon_WidthArea: 25,
icon: Icons.add,
icon_Size: 22,
elevation: 0,
decoration: BoxDecoration(color: Colors.grey[800], borderRadius: BorderRadius.all(Radius.circular(25))),
label_Color: XColors.foregroundLight,
icon_Color: XColors.done,
onPressed: () {
FocusScope.of(context).unfocus();
BTNadd_cmdAdd(item);
setState(() => item.isShowDetails = true);
})),
liPopUpMenu_Items != null
? Container(
height: 30,
child: PopupMenuButton(
padding: EdgeInsets.all(1),
icon: Icon(Icons.more_vert_outlined),
iconSize: 22,
itemBuilder: (context) {
return liPopUpMenu_Items
.map((e) => PopupMenuItem(
height: 40,
child: XBtnbase(
decoration: BoxDecoration(border: Border(bottom: BorderSide(color: Colors.grey[700]!))),
height: 40,
width: (e.iconImage != null || e.icon != null) ? 250 : 150,
label: e.title,
icon_WidthArea: 50,
label_Style: XStyles.xStyTextForSubLabel(textColor: e.color),
icon_Widget: e.icon != null ? null : Container(width: 50, child: e.iconImage),
icon: e.iconImage != null ? null : e.icon,
icon_Size: 23,
icon_Color: e.iconImage != null ? null : e.color,
toolTip_Message: e.toolTip_Message,
onPressed: () => e.onPressed!(context, item),
)))
.toList();
}))
: Container(),
])
]),
childDetails: Column(children: [
item.isSel ? xLayout_xDett_Item_HeadWidget(item, parentSetState, xclViewUI: xView_Scheda) : Container(),
dettWidget != null ? dettWidget(item) : Column(children: liChildrens.map((xclVoce) => dettItem!(xclVoce)).toList()),
Container(
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
//// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI
xMedia_isActive
? (liMediaRAW.isNotEmpty && liMediaRAW.any((element) => element.xDocID == item.id))
? Container(
margin: EdgeInsets.all(8),
decoration: BoxDecoration(border: Border.all(color: Colors.grey[700]!)),
child: Column(children: [
Row(children: [Expanded(child: Container(decoration: BoxDecoration(border: Border(bottom: BorderSide(color: Colors.grey[700]!))), child: Text("Media", textAlign: TextAlign.center, style: XStyles.xStyTextForSubLabel(textColor: XColors.foregroundLight))))]),
Column(
children: liMediaRAW.groupListsBy((element) => element.mediaType).entries.map((e) {
if (e.key == XEnums.mediaType.audio.value) {
return xLayout_Builder_AudioArea(liMediaRAW.where((element) => element.mediaType == XEnums.mediaType.audio.value).toList(), item);
} else if (e.key == XEnums.mediaType.image.value) {
return xLayout_Builder_ImmaginiArea(liMediaRAW.where((element) => element.mediaType == XEnums.mediaType.image.value).toList(), parentID: item.id);
} else {
return xLayout_Builder_VideoArea(liMediaRAW.where((element) => element.mediaType == XEnums.mediaType.video.value).toList(), item);
}
}).toList(),
)
]))
: Container()
: Container()
//// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI //// AREA DETTAGLI
]))
]));
});
}