I’m using dart code v3.86.0.
I’m attempting to make a custom thumb for a slider in flutter, with little success. I get the error:my custom slider implementation isn’t a valid override of ‘SliderComponentShape.paint’
and have mad esur ethe signature is correct and yet it doenst work.
This i smy full code:
class _CustomThumbShape extends SliderComponentShape {
@override
Size getPreferredSize(bool isEnabled, bool isDiscrete) {
return Size.fromRadius(18);
}
String _formatTime(double value) {
int hours = value.floor();
int minutes = ((value - hours) * 60).round();
return '${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(2, '0')}';
}
@override
void paint(
PaintingContext context,
Offset thumbCenter, {
required Animation<double> enableAnimation,
required Animation<double> valueAnimation,
required bool isDiscrete,
required TextPainter labelPainter,
required RenderBox parentBox,
required SliderThemeData sliderTheme,
required TextDirection textDirection,
required double value,
required double textScaleFactor,
required Size sizeWithOverflow,
}) {
final Canvas canvas = context.canvas;
final Paint paint = Paint()
..color = Colors.white
..style = PaintingStyle.fill;
canvas.drawCircle(thumbCenter, 18, paint); // Drawing at 'thumbCenter'
// TextSpan for displaying time based on the slider's value
TextSpan span = TextSpan(
style: TextStyle(
fontSize: 14.0,
fontWeight: FontWeight.bold,
color: Colors.black,
),
text: _formatTime(enableAnimation.value), // Displaying time dynamically
);
TextPainter tp = TextPainter(text: span, textAlign: TextAlign.center);
tp.layout();
Offset textCenter = Offset(
thumbCenter.dx - (tp.width / 2), thumbCenter.dy - (tp.height / 2));
tp.paint(canvas, textCenter);
}
}
and this is the full error message:
'_CustomThumbShape.paint' ('void Function(PaintingContext, Offset, {required Animation<double> enableAnimation, required bool isDiscrete, required TextPainter labelPainter, required RenderBox parentBox, required Size sizeWithOverflow, required SliderThemeData sliderTheme, required TextDirection textDirection, required double textScaleFactor, required double value, required Animation<double> valueAnimation})') isn't a valid override of 'SliderComponentShape.paint' ('void Function(PaintingContext, Offset, {required Animation<double> activationAnimation, required Animation<double> enableAnimation, required bool isDiscrete, required TextPainter labelPainter, required RenderBox parentBox, required Size sizeWithOverflow, required SliderThemeData sliderTheme, required TextDirection textDirection, required double textScaleFactor, required double value})').dartinvalid_override
Any help would be very much appreciated!
I’ve tried fixing the signature, to what it says on the documentation, to no avail. The error persits.
user24785356 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.