SquigglySlider constructor
- Key? key,
- required double value,
- double? secondaryTrackValue,
- required ValueChanged<
double> ? onChanged, - ValueChanged<
double> ? onChangeStart, - ValueChanged<
double> ? onChangeEnd, - double min = 0.0,
- double max = 1.0,
- int? divisions,
- String? label,
- Color? activeColor,
- Color? inactiveColor,
- Color? secondaryActiveColor,
- Color? thumbColor,
- WidgetStateProperty<
Color?> ? overlayColor, - MouseCursor? mouseCursor,
- SemanticFormatterCallback? semanticFormatterCallback,
- FocusNode? focusNode,
- bool autofocus = false,
- double squiggleAmplitude = 0.0,
- double squiggleWavelength = 0.0,
- double squiggleSpeed = 1.0,
- bool useLineThumb = false,
Creates a squiggly Material Design slider.
The squiggle itself is a sinus curve with rounded edges, vertically centered
its amplitude and wavelength can be adjusted by squiggleAmplitude and squiggleWavelength respectively,
the curve itself is animated, and the animation speed can be adjusted with squiggleSpeed which controls how many waves pass from left to right in one second.
The slider itself does not maintain any state. Instead, when the state of
the slider changes, the widget calls the onChanged callback. Most
widgets that use a slider will listen for the onChanged callback and
rebuild the slider with a new value to update the visual appearance of
the slider.
valuedetermines currently selected value for this slider.onChangedis called while the user is selecting a new value for the slider.onChangeStartis called when the user starts to select a new value for the slider.onChangeEndis called when the user is done selecting a new value for the slider.
You can override some of the colors with the activeColor and
inactiveColor properties, although more fine-grained control of the
appearance is achieved using a SliderThemeData.
A slider can be used to select from either a continuous or a discrete set of
values. The default is to use a continuous range of values from min to
max. To use discrete values, use a non-null value for divisions, which
indicates the number of discrete intervals. For example, if min is 0.0 and
max is 50.0 and divisions is 5, then the slider can take on the
discrete values 0.0, 10.0, 20.0, 30.0, 40.0, and 50.0.
The terms for the parts of a slider are:
- The "thumb", which is a shape that slides horizontally when the user drags it.
- The "track", which is the line that the slider thumb slides along.
- The "value indicator", which is a shape that pops up when the user is dragging the thumb to indicate the value being selected.
- The "active" side of the slider is the side between the thumb and the minimum value.
- The "inactive" side of the slider is the side between the thumb and the maximum value.
The slider will be disabled if onChanged is null or if the range given by
min..max is empty (i.e. if min is equal to max).
The slider widget itself does not maintain any state. Instead, when the state
of the slider changes, the widget calls the onChanged callback. Most
widgets that use a slider will listen for the onChanged callback and
rebuild the slider with a new value to update the visual appearance of the
slider. To know when the value starts to change, or when it is done
changing, set the optional callbacks onChangeStart and/or onChangeEnd.
By default, a slider will be as wide as possible, centered vertically. When given unbounded constraints, it will attempt to make the track 144 pixels wide (with margins on each side) and will shrink-wrap vertically.
Implementation
const SquigglySlider({
super.key,
required super.value,
super.secondaryTrackValue,
required super.onChanged,
super.onChangeStart,
super.onChangeEnd,
super.min = 0.0,
super.max = 1.0,
super.divisions,
super.label,
super.activeColor,
super.inactiveColor,
super.secondaryActiveColor,
super.thumbColor,
super.overlayColor,
super.mouseCursor,
super.semanticFormatterCallback,
super.focusNode,
super.autofocus = false,
this.squiggleAmplitude = 0.0,
this.squiggleWavelength = 0.0,
this.squiggleSpeed = 1.0,
this.useLineThumb = false,
});