buildXItem<T extends XFDataItem, K> method

dynamic buildXItem<T extends XFDataItem, K>(
  1. T item,
  2. List liChildrens,
  3. dynamic BTNadd_cmdAdd(
    1. T
    ),
  4. void parentSetState(
    1. void ()
    ), {
  5. Widget dettItem(
    1. dynamic
    )?,
  6. String? BTNadd_label,
  7. Widget? mainWidget,
  8. Color? backGround_Color,
  9. Widget dettWidget(
    1. dynamic
    )?,
  10. EdgeInsetsGeometry? margin,
  11. List<XPopUpMenuItem>? liPopUpMenu_Items,
  12. bool border_Visible = false,
  13. bool title_InMainWidget_Visible = false,
  14. XView? xView_Scheda,
  15. XView? xView_Elenco,
  16. XView? xViewDett,
  17. List<Widget>? titleLiWidgets,
  18. 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
          ]))
        ]));
  });
}