// Author: fengshengxiong // Date: 2024/6/2 // Description: 自定义RoundRectSliderThumbShape import 'package:flutter/material.dart'; class RoundRectSliderThumbShape extends SliderComponentShape { final double thumbHeight; final double thumbWidth; final double thumbRadius; final Color thumbColor; const RoundRectSliderThumbShape({ this.thumbHeight = 20.0, this.thumbWidth = 20.0, this.thumbRadius = 6.0, this.thumbColor = Colors.black, }); @override Size getPreferredSize(bool isEnabled, bool isDiscrete) { return Size(thumbWidth, thumbHeight); } @override void paint(PaintingContext context, Offset center, {required Animation activationAnimation, required Animation enableAnimation, 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 Paint thumbPaint = Paint() ..color = thumbColor ..style = PaintingStyle.fill; final Rect thumbRect = Rect.fromCenter( center: center, width: thumbWidth, height: thumbHeight, ); final RRect thumbRRect = RRect.fromRectAndRadius( thumbRect, Radius.circular(thumbRadius), ); context.canvas.drawRRect(thumbRRect, thumbPaint); } }