paint method

void paint(
  1. PaintingContext context,
  2. Offset offset,
  3. Offset? thumbCenter,
  4. Offset? startThumbCenter,
  5. Offset? endThumbCenter, {
  6. required RenderBox parentBox,
  7. required SfSliderThemeData themeData,
  8. SfRangeValues? currentValues,
  9. dynamic currentValue,
  10. required Animation<double> enableAnimation,
  11. required TextDirection textDirection,
})

Paints the major ticks based on the values passed to it.

Implementation

void paint(PaintingContext context, Offset offset, Offset? thumbCenter,
    Offset? startThumbCenter, Offset? endThumbCenter,
    {required RenderBox parentBox,
    required SfSliderThemeData themeData,
    SfRangeValues? currentValues,
    dynamic currentValue,
    required Animation<double> enableAnimation,
    required TextDirection textDirection}) {
  bool isInactive = false;
  final Size tickSize = getPreferredSize(themeData);
  final bool isVertical = _isVertical(parentBox as RenderBaseSlider);

  if (!isVertical) {
    // Added this condition to check whether consider single thumb or
    // two thumbs for finding active range.
    if (startThumbCenter != null) {
      if (!parentBox.isInversed) {
        isInactive =
            offset.dx < startThumbCenter.dx || offset.dx > endThumbCenter!.dx;
      } else {
        isInactive =
            offset.dx > startThumbCenter.dx || offset.dx < endThumbCenter!.dx;
      }
    } else {
      if (!parentBox.isInversed) {
        isInactive = offset.dx > thumbCenter!.dx;
      } else {
        isInactive = offset.dx < thumbCenter!.dx;
      }
    }
  } else {
    // Added this condition to check whether consider single thumb or
    // two thumbs for finding active range.
    if (startThumbCenter != null) {
      if (!parentBox.isInversed) {
        isInactive =
            offset.dy > startThumbCenter.dy || offset.dy < endThumbCenter!.dy;
      } else {
        isInactive =
            offset.dy < startThumbCenter.dy || offset.dy > endThumbCenter!.dy;
      }
    } else {
      if (!parentBox.isInversed) {
        isInactive = offset.dy < thumbCenter!.dy;
      } else {
        isInactive = offset.dy > thumbCenter!.dy;
      }
    }
  }

  final Color begin = isInactive
      ? themeData.disabledInactiveTickColor!
      : themeData.disabledActiveTickColor!;
  final Color end =
      isInactive ? themeData.inactiveTickColor! : themeData.activeTickColor!;
  final Paint paint = Paint()
    ..isAntiAlias = true
    ..strokeWidth = _isVertical(parentBox) ? tickSize.height : tickSize.width
    ..color = ColorTween(begin: begin, end: end).evaluate(enableAnimation)!;
  if (_isVertical(parentBox)) {
    context.canvas.drawLine(
        offset, Offset(offset.dx + tickSize.width, offset.dy), paint);
  } else {
    context.canvas.drawLine(
        offset, Offset(offset.dx, offset.dy + tickSize.height), paint);
  }
}