Two_ConcatenatedXItem<T, K> static method

Widget Two_ConcatenatedXItem<T, K>({
  1. required Axis wrapDirection,
  2. required double fontSizeForItem,
  3. required Color? titleColor,
  4. required Iterable<MapEntry<dynamic, List<T>>> items,
  5. required Widget titleFirstWidget(
    1. T
    ),
  6. required K lastGroupListsBy(
    1. T
    ),
  7. required Widget lastWidgetForGroupBy(
    1. MapEntry<K, List<T>>
    ),
  8. required Widget lastWidget(
    1. T
    ),
  9. bool groupByForLastLevel = true,
  10. String? title,
  11. AlignmentGeometry? titleAlignOnTop,
  12. AlignmentGeometry? titleAlignOnLeft,
  13. CrossAxisAlignment? crossAxisAlignmentXItem,
  14. bool titleOnTop = true,
  15. bool titleFirstOnTop = true,
  16. bool? borderAllAroundList,
  17. bool? borderVisible,
  18. Color? backGroundColorTitleContainer,
  19. Color? colorBorderOfarea,
  20. Color? titleBorderColor,
  21. Color? firstBorderColorOfArea,
  22. Color? backGroundColor,
  23. Color? backGroundColorFirstXItem,
  24. Color? backGroundColorSecondXItem,
  25. Color? backGroundColorInternalXContainer,
  26. double? titleContainerHeight,
  27. double? titleContainerWidth,
  28. double? fontSizeForTitleOfArea,
  29. double? widthFirstXItem,
  30. double? widthSecondXItem,
  31. double? titleFirstContainerWidth,
  32. double? titleFirstContainerHeight,
  33. Axis? firstWrapDirection,
  34. Axis? secondWrapDirection,
  35. Axis? thirdWrapDirection,
})

Implementation

static Widget Two_ConcatenatedXItem<T, K>({
  required Axis wrapDirection,

  ///fontSize testi dell'Item principale (Padre)
  required double fontSizeForItem,

  ///Titolo dell'Item principale (Padre)

  ///Colore del titolo dell'Item principale (Padre)
  required Color? titleColor,

  ///Prima lista di Items che conterrà l'Item principale (Padre)
  required Iterable<MapEntry<dynamic, List<T>>> items,

  ///Widget per il titolo degli Items della prima lista
  required Widget Function(T) titleFirstWidget,

  ///Raggruppamento per ...., da mettere la propietà o le propietà per fare il groupBy per la terza lista
  required K Function(T) lastGroupListsBy,

  ///Widget da riempire per visualizzare gli items della seconda lista
  required Widget Function(MapEntry<K, List<T>>) lastWidgetForGroupBy,
  required Widget Function(T) lastWidget,

  ///Da settare false nel caso non si voglia un groupBy anche per l'ultima lista
  bool groupByForLastLevel = true,
  String? title,
  AlignmentGeometry? titleAlignOnTop,
  AlignmentGeometry? titleAlignOnLeft,
  CrossAxisAlignment? crossAxisAlignmentXItem,
  bool titleOnTop = true,
  bool titleFirstOnTop = true,
  bool? borderAllAroundList,
  bool? borderVisible,
  Color? backGroundColorTitleContainer,
  Color? colorBorderOfarea,
  Color? titleBorderColor,
  Color? firstBorderColorOfArea,
  Color? backGroundColor,
  Color? backGroundColorFirstXItem,
  Color? backGroundColorSecondXItem,
  Color? backGroundColorInternalXContainer,
  double? titleContainerHeight,
  double? titleContainerWidth,
  double? fontSizeForTitleOfArea,
  double? widthFirstXItem,
  double? widthSecondXItem,
  double? titleFirstContainerWidth,
  double? titleFirstContainerHeight,
  Axis? firstWrapDirection,
  Axis? secondWrapDirection,
  Axis? thirdWrapDirection,
}) {
  return XItem(title: title, title_Color: colorBorderOfarea ?? Colors.black, title_OnTop: titleOnTop, title_BorderColor: titleBorderColor ?? Colors.black, title_ContainerHeight: titleContainerHeight, card_Color: backGroundColor ?? Colors.black, title_WidthBorder: 5, title_BackGroundColor: backGroundColorTitleContainer ?? null, mainAxisAlignmentXItem: MainAxisAlignment.start, title_ContainerWidth: titleContainerWidth ?? double.infinity, title_AlignOnTop: titleAlignOnTop ?? Alignment.center, title_AlignOnLeft: titleAlignOnLeft ?? Alignment.center, title_Style: TextStyle(color: titleColor, fontSize: fontSizeForTitleOfArea, fontWeight: FontWeight.bold), children: [
    items.length == 0
        // NESSUNA - VUOTO
        ? XContainer(borderVisible: borderVisible ?? true, title: "", title_BackColor: colorBorderOfarea ?? Colors.black, borderAll: true, child: Container(height: 40, child: Row(children: [Expanded(child: Text("...nessuno...", textAlign: TextAlign.center, style: XStyles.xStyleText(fontSize: 30)))])))
        // ITEMS
        : XContainer(
            borderVisible: borderVisible ?? true,
            borderWidth: 5,
            backGroundColorInternalWidget: backGroundColorInternalXContainer ?? Colors.grey[900],
            title: "",
            title_BackColor: colorBorderOfarea ?? Colors.black,
            child: Wrap(
                spacing: 1,
                runSpacing: 1,
                direction: Axis.horizontal,

                //1ST GROUP
                children: items
                    .map((grp) => XItem(
                          title_Widget: grp.value.map(titleFirstWidget).first,
                          //                         crossAxisAlignmentXItem: CrossAxisAlignment.start,
                          crossAxisAlignmentXItem: crossAxisAlignmentXItem ?? CrossAxisAlignment.center,
                          title_AlignOnTop: Alignment.center,
                          title_BackGroundColor: backGroundColorTitleContainer,
                          title_ContainerWidth: titleFirstOnTop == true ? titleFirstContainerWidth ?? 250 : titleFirstContainerWidth ?? 200,
                          title_OnTop: titleFirstOnTop,
                          title_ContainerHeight: titleFirstContainerHeight,
                          width: widthFirstXItem,
                          children: [
                            ///Widget che visualizza Wrapped la lista delle Navi
                            XContainer(
                                title: "",
                                borderAll: true,

                                // backGroundColorInternalWidget: Colors.black,
                                title_BackColor: firstBorderColorOfArea ?? titleColor,
                                child: Wrap(
                                    spacing: 1,
                                    runSpacing: 1,
                                    direction: Axis.horizontal,
                                    // 2nd GROUP LIST
                                    children: groupByForLastLevel == true
                                        ? grp.value
                                            .groupListsBy<K>(lastGroupListsBy)
                                            .entries
                                            .map(
                                              //ITEM
                                              lastWidgetForGroupBy,
                                              //ITEM
                                            )
                                            .toList()
                                        : grp.value.map(lastWidget).toList()))
                          ],
                        ))
                    .toList())),
  ]);
}