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,
      titleColor: colorBorderOfarea ?? Colors.black,
      titleOnTop: titleOnTop,
      titleBorderColor: titleBorderColor ?? Colors.black,
      titleContainerHeight: titleContainerHeight,
      colorCard: backGroundColor ?? Colors.black,
      titleWidthBorder: 5,
      titleBackGroundColor: backGroundColorTitleContainer ?? null,
      mainAxisAlignmentXItem: MainAxisAlignment.start,
      titleContainerWidth: titleContainerWidth ?? double.infinity,
      titleAlignOnTop: titleAlignOnTop ?? Alignment.center,
      titleAlignOnLeft: titleAlignOnLeft ?? Alignment.center,
      titleStyle: TextStyle(color: titleColor, fontSize: fontSizeForTitleOfArea, fontWeight: FontWeight.bold),
      children: [
        items.length == 0
            // NESSUNA - VUOTO
            ? XContainer(
                borderVisible: borderVisible ?? true, title: "", titleBackColor: 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: "",
                titleBackColor: colorBorderOfarea ?? Colors.black,
                child: Wrap(
                    spacing: 1,
                    runSpacing: 1,
                    direction: Axis.horizontal,

                    //1ST GROUP
                    children: items
                        .map((grp) => XItem(
                              titleWidget: grp.value.map(titleFirstWidget).first,
                              //                         crossAxisAlignmentXItem: CrossAxisAlignment.start,
                              crossAxisAlignmentXItem: crossAxisAlignmentXItem ?? CrossAxisAlignment.center,
                              titleAlignOnTop: Alignment.center,
                              titleBackGroundColor: backGroundColorTitleContainer,
                              titleContainerWidth: titleFirstOnTop == true ? titleFirstContainerWidth ?? 250 : titleFirstContainerWidth ?? 200,
                              titleOnTop: titleFirstOnTop,
                              titleContainerHeight: titleFirstContainerHeight ?? 25,
                              width: widthFirstXItem,
                              children: [
                                ///Widget che visualizza Wrapped la lista delle Navi
                                XContainer(
                                    title: "",
                                    borderAll: true,

                                    // backGroundColorInternalWidget: Colors.black,
                                    titleBackColor: 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())),
      ]);
}