paint method

  1. @override
void paint(
  1. PaintingContext context,
  2. Offset center, {
  3. required RenderBox parentBox,
  4. required AnnotatedSliderThemeData sliderTheme,
  5. required Animation<double> enableAnimation,
  6. required Offset startThumbCenter,
  7. required Offset endThumbCenter,
  8. bool isEnabled = false,
  9. required TextDirection textDirection,
})
override

Implementation

@override
void paint(
  PaintingContext context,
  Offset center, {
  required RenderBox parentBox,
  required AnnotatedSliderThemeData sliderTheme,
  required Animation<double> enableAnimation,
  required Offset startThumbCenter,
  required Offset endThumbCenter,
  bool isEnabled = false,
  required TextDirection textDirection,
}) {
  assert(sliderTheme.disabledActiveTickMarkColor != null);
  assert(sliderTheme.disabledInactiveTickMarkColor != null);
  assert(sliderTheme.activeTickMarkColor != null);
  assert(sliderTheme.inactiveTickMarkColor != null);

  final bool isBetweenThumbs = switch (textDirection) {
    TextDirection.ltr =>
      startThumbCenter.dx < center.dx && center.dx < endThumbCenter.dx,
    TextDirection.rtl =>
      endThumbCenter.dx < center.dx && center.dx < startThumbCenter.dx,
  };
  final Color? begin =
      isBetweenThumbs
          ? sliderTheme.disabledActiveTickMarkColor
          : sliderTheme.disabledInactiveTickMarkColor;
  final Color? end =
      isBetweenThumbs
          ? sliderTheme.activeTickMarkColor
          : sliderTheme.inactiveTickMarkColor;
  final Paint paint =
      Paint()
        ..color =
            ColorTween(begin: begin, end: end).evaluate(enableAnimation)!;

  // The tick marks are tiny circles that are the same height as the track.
  final double tickMarkRadius =
      getPreferredSize(isEnabled: isEnabled, sliderTheme: sliderTheme).width /
      2;
  if (tickMarkRadius > 0) {
    context.canvas.drawCircle(center, tickMarkRadius, paint);
  }
}