alignWidgetAxis static method

Map<String, dynamic> alignWidgetAxis(
  1. int childrenLength,
  2. String? modelLayoutType,
  3. bool? modelCenter,
  4. String? modelHorizontalAlignment,
  5. String? modelVerticalAlignment,
)

Implementation

static Map<String, dynamic> alignWidgetAxis(
    int childrenLength,
    String? modelLayoutType,
    bool? modelCenter,
    String? modelHorizontalAlignment,
    String? modelVerticalAlignment) {
  String halign;
  String valign;
  CrossAxisAlignment crossAlignment = CrossAxisAlignment.start;
  MainAxisAlignment mainAlignment = MainAxisAlignment.start;
  WrapAlignment mainWrapAlignment = WrapAlignment.start;
  WrapCrossAlignment crossWrapAlignment = WrapCrossAlignment.start;
  Alignment aligned = Alignment.topLeft;
  Map<String, dynamic> alignMap = Map<String, dynamic>();

// halign override for center if set;
  if (modelHorizontalAlignment == null && modelCenter == true) {
    halign = 'center';
  } else if (modelHorizontalAlignment == null && modelCenter == false) {
    halign = 'start';
  } else {
    halign = modelHorizontalAlignment ?? 'start';
  }

// valign overrides center if set;
  if (modelVerticalAlignment == null && modelCenter == true) {
    valign = 'center';
  } else if (modelVerticalAlignment == null && modelCenter == false) {
    valign = 'start';
  } else {
    valign = modelVerticalAlignment ?? 'start';
  }

// determine the alignment for the layout type based on the axes;
  if (modelLayoutType == 'row') {
// cases for Cross axis

    switch (valign) {
      case 'center':
        crossAlignment = CrossAxisAlignment.center;
        crossWrapAlignment = WrapCrossAlignment.center;
        break;
      case 'start':
      case 'top':
        crossAlignment = CrossAxisAlignment.start;
        crossWrapAlignment = WrapCrossAlignment.start;
        break;
      case 'end':
      case 'bottom':
        crossAlignment = CrossAxisAlignment.end;
        crossWrapAlignment = WrapCrossAlignment.end;
        break;
      default:
        crossAlignment = CrossAxisAlignment.start;
        crossWrapAlignment = WrapCrossAlignment.start;
        break;
    }

// cases for main axis
    switch (halign) {
      case 'center':
        mainAlignment = MainAxisAlignment.center;
        mainWrapAlignment = WrapAlignment.center;
        break;
      case 'start':
      case 'left':
        mainAlignment = MainAxisAlignment.start;
        mainWrapAlignment = WrapAlignment.start;
        break;
      case 'end':
      case 'right':
        mainAlignment = MainAxisAlignment.end;
        mainWrapAlignment = WrapAlignment.end;
        break;
      case 'spacearound':
      case 'around':
        mainAlignment = MainAxisAlignment.spaceAround;
        mainWrapAlignment = WrapAlignment.spaceAround;
        break;
      case 'spacebetween':
      case 'between':
        mainAlignment = MainAxisAlignment.spaceBetween;
        mainWrapAlignment = WrapAlignment.spaceBetween;
        break;
      case 'spaceevenly':
      case 'evenly':
        mainAlignment = MainAxisAlignment.spaceEvenly;
        mainWrapAlignment = WrapAlignment.spaceEvenly;
        break;
      default:
        mainAlignment = MainAxisAlignment.start;
        mainWrapAlignment = WrapAlignment.start;
        break;
    }
  } else if (modelLayoutType == 'column' ||
      modelLayoutType == 'col') {
    switch (halign) {
      case 'center':
        crossAlignment = CrossAxisAlignment.center;
        crossWrapAlignment = WrapCrossAlignment.center;
        break;
      case 'start':
      case 'left':
        crossAlignment = CrossAxisAlignment.start;
        crossWrapAlignment = WrapCrossAlignment.start;
        break;
      case 'end':
      case 'right':
        crossAlignment = CrossAxisAlignment.end;
        crossWrapAlignment = WrapCrossAlignment.end;
        break;
      default:
        crossAlignment = CrossAxisAlignment.start;
        crossWrapAlignment = WrapCrossAlignment.start;
        break;
    }

// cases for main axis
    switch (valign) {
      case 'center':
        mainAlignment = MainAxisAlignment.center;
        mainWrapAlignment = WrapAlignment.center;
        break;
      case 'start':
      case 'top':
        mainAlignment = MainAxisAlignment.start;
        mainWrapAlignment = WrapAlignment.start;
        break;
      case 'end':
      case 'bottom':
        mainAlignment = MainAxisAlignment.end;
        mainWrapAlignment = WrapAlignment.end;
        break;
      case 'spacearound':
      case 'around':
        mainAlignment = MainAxisAlignment.spaceAround;
        mainWrapAlignment = WrapAlignment.spaceAround;
        break;
      case 'spacebetween':
      case 'between':
        mainAlignment = MainAxisAlignment.spaceBetween;
        mainWrapAlignment = WrapAlignment.spaceBetween;
        break;
      case 'spaceevenly':
      case 'evenly':
        mainAlignment = MainAxisAlignment.spaceEvenly;
        mainWrapAlignment = WrapAlignment.spaceEvenly;
        break;
      default:
        mainAlignment = MainAxisAlignment.start;
        mainWrapAlignment = WrapAlignment.start;
        break;
    }
  }

  if (modelLayoutType == 'row') {
// row Alignment for box align
    switch (valign) {
      case 'center':
        aligned = Alignment.centerLeft;
        break;
      case 'start':
      case 'top':
        aligned = Alignment.topLeft;
        break;
      case 'end':
      case 'bottom':
        aligned = Alignment.bottomLeft;
        break;
      default:
        aligned = Alignment.topLeft;
        break;
    }
  }

  if (modelLayoutType == 'column' ||
      modelLayoutType == 'col') {
// Column Alignment for box align
    switch (halign) {
      case 'center':
        aligned = Alignment.topCenter;
        break;
      case 'start':
      case 'left':
        aligned = Alignment.topLeft;
        break;
      case 'end':
      case 'right':
        aligned = Alignment.topRight;
        break;
      default:
        aligned = Alignment.topLeft;
        break;
    }
  }

  if (childrenLength == 1 || modelLayoutType == 'stack') {
    switch (valign + halign) {
      case 'center' + 'center':
        aligned = Alignment.center;
        break;
      case 'top' + 'center':
      case 'start' + 'center':
        aligned = Alignment.topCenter;
        break;
      case 'top' + 'left':
      case 'start' + 'left':
      case 'top' + 'start':
      case 'start' + 'start':
        aligned = Alignment.topLeft;
        break;
      case 'top' + 'right':
      case 'start' + 'right':
      case 'top' + 'end':
      case 'start' + 'end':
        aligned = Alignment.topRight;
        break;
      case 'end' + 'center':
      case 'bottom' + 'center':
        aligned = Alignment.bottomCenter;
        break;
      case 'end' + 'left':
      case 'bottom' + 'left':
      case 'end' + 'start':
      case 'bottom' + 'start':
        aligned = Alignment.bottomLeft;
        break;
      case 'end' + 'right':
      case 'bottom' + 'right':
      case 'end' + 'end':
      case 'bottom' + 'end':
        aligned = Alignment.bottomRight;
        break;
      default:
        aligned = Alignment.topLeft;
        break;
    }
  }

  alignMap = {
    'crossAlignment': crossAlignment,
    'mainAlignment': mainAlignment,
    'aligned': aligned,
    'mainWrapAlignment': mainWrapAlignment,
    'crossWrapAlignment': crossWrapAlignment,
  };

  return alignMap;
}