paint method

  1. @override
void paint(
  1. PaintingContext context,
  2. Offset center, {
  3. required Animation<double> activationAnimation,
  4. required Animation<double> enableAnimation,
  5. required bool isDiscrete,
  6. required TextPainter labelPainter,
  7. required RenderBox parentBox,
  8. required AnnotatedSliderThemeData sliderTheme,
  9. required TextDirection textDirection,
  10. required double value,
  11. required double textScaleFactor,
  12. required Size sizeWithOverflow,
})
override

Implementation

@override
void paint(
  PaintingContext context,
  Offset center, {
  required Animation<double> activationAnimation,
  required Animation<double> enableAnimation,
  required bool isDiscrete,
  required TextPainter labelPainter,
  required RenderBox parentBox,
  required AnnotatedSliderThemeData sliderTheme,
  required TextDirection textDirection,
  required double value,
  required double textScaleFactor,
  required Size sizeWithOverflow,
}) {
  assert(sliderTheme.disabledThumbColor != null);
  assert(sliderTheme.thumbColor != null);

  final Canvas canvas = context.canvas;
  final Tween<double> radiusTween = Tween<double>(
    begin: _disabledThumbRadius,
    end: enabledThumbRadius,
  );
  final ColorTween colorTween = ColorTween(
    begin: sliderTheme.disabledThumbColor,
    end: sliderTheme.thumbColor,
  );

  final Color color = colorTween.evaluate(enableAnimation)!;
  final double radius = radiusTween.evaluate(enableAnimation);

  final Tween<double> elevationTween = Tween<double>(
    begin: elevation,
    end: pressedElevation,
  );

  final double evaluatedElevation = elevationTween.evaluate(
    activationAnimation,
  );
  final Path path =
      Path()..addArc(
        Rect.fromCenter(
          center: center,
          width: 2 * radius,
          height: 2 * radius,
        ),
        0,
        math.pi * 2,
      );

  bool paintShadows = true;
  assert(() {
    if (debugDisableShadows) {
      _debugDrawShadow(canvas, path, evaluatedElevation);
      paintShadows = false;
    }
    return true;
  }());

  if (paintShadows) {
    canvas.drawShadow(path, Colors.black, evaluatedElevation, true);
  }

  canvas.drawCircle(center, radius, Paint()..color = color);
}