paint method
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,
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);
}
}