paint method Null safety
- PaintingContext context,
- Offset center,
- {Animation<
double> ? activationAnimation, - Animation<
double> ? enableAnimation, - bool? isDiscrete,
- bool? isOnTop,
- TextPainter? labelPainter,
- double? textScaleFactor,
- Size? sizeWithOverflow,
- RenderBox? parentBox,
- SliderThemeData? sliderTheme,
- TextDirection? textDirection,
- double? value,
- Thumb? thumb}
Paints the value indicator shape based on the state passed to it.
The context
argument represents the RangeSlider's render box.
The center
argument is the offset for where this shape's center should be
painted. This offset is relative to the origin of the context
canvas.
The activationAnimation
argument is an animation triggered when the user
begins to interact with the RangeSlider. It reverses when the user stops
interacting with the slider.
The enableAnimation
argument is an animation triggered when the
RangeSlider is enabled, and it reverses when the slider is disabled. The
RangeSlider is enabled when RangeSlider.onChanged is not null. Use
this to paint intermediate frames for this shape when the slider changes
enabled state.
The isDiscrete
argument is true if RangeSlider.divisions is non-null.
When true, the slider will render tick marks on top of the track.
The isOnTop
argument is the top-most value indicator between the two value
indicators, which is always the indicator for the most recently selected thumb. In
the default case, this is used to paint a stroke around the top indicator
for better visibility between the two indicators.
The textScaleFactor
argument can be used to determine whether the
component should paint larger or smaller, depending on whether
textScaleFactor
is greater than 1 for larger, and between 0 and 1 for
smaller. It usually comes from MediaQueryData.textScaleFactor.
The sizeWithOverflow
argument can be used to determine the bounds the
drawing of the components that are outside of the regular slider bounds.
It's the size of the box, whose center is aligned with the slider's
bounds, that the value indicators must be drawn within. Typically, it is
bigger than the slider.
The parentBox
argument is the RenderBox of the RangeSlider. Its
attributes, such as size, can be used to assist in painting this shape.
The sliderTheme
argument is the theme assigned to the RangeSlider that
this shape belongs to.
The textDirection
argument can be used to determine how any extra text
or graphics, besides the text painted by the labelPainter
should be
positioned. The labelPainter
argument already has the textDirection
set.
The value
argument is the current parametric value (from 0.0 to 1.0) of
the slider.
The thumb
argument is the specifier for which of the two thumbs this
method should paint (start or end).
Implementation
@override
void paint(
PaintingContext context,
Offset center, {
Animation<double>? activationAnimation,
Animation<double>? enableAnimation,
bool? isDiscrete,
bool? isOnTop,
TextPainter? labelPainter,
double? textScaleFactor,
Size? sizeWithOverflow,
RenderBox? parentBox,
SliderThemeData? sliderTheme,
TextDirection? textDirection,
double? value,
Thumb? thumb,
}) {
final Canvas canvas = context.canvas;
final double scale = activationAnimation!.value;
_pathPainter.paint(
parentBox: parentBox!,
canvas: canvas,
center: center,
scale: scale,
labelPainter: labelPainter!,
textScaleFactor: textScaleFactor!,
sizeWithOverflow: sizeWithOverflow!,
backgroundPaintColor: sliderTheme!.valueIndicatorColor!,
strokePaintColor: isOnTop! ? sliderTheme.overlappingShapeStrokeColor : null,
);
}