buildVertical method

  1. @override
Widget buildVertical()
override

Implementation

@override
Widget buildVertical() {
  return SizedBox(
    height: measureAxis.xAxisLabelSpace,
    child: LayoutBuilder(builder: (context, constraints) {
      final maxLayoutWidth = constraints.maxWidth;
      final segmentSpace = maxLayoutWidth / (tickCount - 1);
      final alignStack = switch (crossAxis) {
        CrossAxisAlignment.start => Alignment.centerLeft,
        CrossAxisAlignment.center => Alignment.center,
        _ => Alignment.centerRight,
      };
      return Stack(
        alignment: alignStack,
        children: [
          Row(
            crossAxisAlignment: crossAxis,
            mainAxisAlignment: MainAxisAlignment.start,
            children: [labelsInViewport.first].map((e) {
              final labelText = DrawTickLabel<num>(
                label: e,
                labelFormatter: measureAxis.labelFormatter,
                labelStyle: measureAxis.labelStyle,
              );
              final labelOffset = Offset(
                measureAxis.labelOffset.dx - segmentSpace / 2,
                measureAxis.labelOffset.dy,
              );
              return Transform.translate(
                offset: labelOffset,
                child: SizedBox(
                  width: segmentSpace,
                  child: Align(
                    alignment: Alignment.center,
                    child: measureAxis.labelWidget != null
                        ? measureAxis.labelWidget!(e) ?? labelText
                        : labelText,
                  ),
                ),
              );
            }).toList(),
          ),
          Row(
            crossAxisAlignment: crossAxis,
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: List.generate(tickCount - 1, (index) {
              final label = labelsInViewport[index + 1];
              final labelText = DrawTickLabel<num>(
                label: label,
                labelFormatter: measureAxis.labelFormatter,
                labelStyle: measureAxis.labelStyle,
              );

              final labelOffset = Offset(
                measureAxis.labelOffset.dx + segmentSpace / 2,
                measureAxis.labelOffset.dy,
              );

              return Transform.translate(
                offset: labelOffset,
                child: SizedBox(
                  width: segmentSpace,
                  child: Align(
                    alignment: Alignment.center,
                    child: measureAxis.labelWidget != null
                        ? measureAxis.labelWidget!(label) ?? labelText
                        : labelText,
                  ),
                ),
              );
            }),
          ),
        ],
      );
    }),
  );
}