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(item, 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.showHead
                        ? Expanded(
                            child: Row(children: [
                              Expanded(
                                  child: Wrap(
                                children: xLayout_Render_HeadView(xView_Elenco),
                              ))
                            ]),
                          )
                        : Container(),
                mainWidget != null ? Expanded(flex: 2, child: mainWidget) : Container(),
                Container(margin: EdgeInsets.only(top: 5, right: 5, bottom: 5), child: xActionsItem_ViewDett(item, viewDett_Data, setState, xView_Scheda)),
                media_isActive ? Container(margin: EdgeInsets.only(top: 5, right: 5, bottom: 5), child: xActionsItem_AddMedia(item)) : Container(),
                Container(
                    margin: EdgeInsets.only(top: 5, right: 5, bottom: 5),
                    child: XBtnbase(
                        width: 40,
                        height: 40,
                        // label: BTNadd_label,
                        icon_WidthArea: 25,
                        icon: Icons.add,
                        icon_Size: 22,
                        onPressed: () {
                          FocusScope.of(context).unfocus();
                          BTNadd_cmdAdd(item);
                          setState(() {
                            item.isShowDetails = true;
                          });
                          // parentSetState(() => editedPage = true);
                        },
                        elevation: 0,
                        decoration: BoxDecoration(color: Colors.grey[800], borderRadius: BorderRadius.all(Radius.circular(25))),
                        label_Color: XColors.foregroundLight,
                        icon_Color: XColors.done)),
                liPopUpMenu_Items != null
                    ? Container(
                        height: 30,
                        child: PopupMenuButton(
                          padding: EdgeInsets.all(1),
                          icon: Icon(Icons.more_vert_outlined),
                          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(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();
                          },
                          iconSize: 22,
                        ))
                    : Container(),
              ])
            ],
          ),
          childDetails: Column(
            children: [
              item.isSel
                  ? xView_Scheda == null
                      ? Container()
                      : xDett_Item_HeadWidget(item, parentSetState, xclViewUI: xView_Scheda)
                  : Container(),
              dettWidget != null
                  ? dettWidget(item)
                  : Column(
                      children: liChildrens.map((xclVoce) {
                      return dettItem!(xclVoce);
                    }).toList()),
              Container(
                  // decoration: BoxDecoration(color: colorItem_Lavoro),
                  child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
                //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI
                media_isActive
                    ? (_liMediaRAW != null && _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(XColors.foregroundLight))))]),
                              Column(
                                children: _liMediaRAW.groupListsBy((element) => element.mediaType).entries.map((e) {
                                  if (e.key == XEnumsMediaType.audio) {
                                    return builder_AudioArea(_liMediaRAW.where((element) => element.mediaType == XEnumsMediaType.audio).toList(), item);
                                  } else if (e.key == XEnumsMediaType.image) {
                                    return builder_ImmaginiArea(_liMediaRAW.where((element) => element.mediaType == XEnumsMediaType.image).toList(), parentID: item.id);
                                  } else {
                                    return builder_VideoArea(_liMediaRAW.where((element) => element.mediaType == XEnumsMediaType.video).toList(), item);
                                  }
                                }).toList(),
                              )
                            ]),
                          )
                        : Container()
                    : Container(),
                //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI  //// AREA DETTAGLI
              ]))
            ],
          ));
    },
  );
}