FormeSlider constructor
FormeSlider({
- double? initialValue,
- required String name,
- bool readOnly = false,
- required double min,
- required double max,
- Key? key,
- int? order,
- bool quietlyValidate = false,
- InputDecoration? decoration,
- FormeFieldDecorator<
double> ? decorator, - SemanticFormatterCallback? semanticFormatterCallback,
- ValueChanged<
double> ? onChangeStart, - ValueChanged<
double> ? onChangeEnd, - ValueChanged<
double> ? onChanged, - int? divisions,
- Color? activeColor,
- Color? inactiveColor,
- SliderThemeData? sliderThemeData,
- MouseCursor? mouseCursor,
- FormeLabelRender? labelRender,
- Duration? asyncValidatorDebounce,
- AutovalidateMode? autovalidateMode,
- FormeValueChanged<
double> ? onValueChanged, - FormeFocusChanged<
double> ? onFocusChanged, - FormeFieldValidationChanged<
double> ? onValidationChanged, - FormeFieldInitialed<
double> ? onInitialed, - FormeFieldSetter<
double> ? onSaved, - FormeValidator<
double> ? validator, - FormeAsyncValidator<
double> ? asyncValidator, - bool registrable = true,
- bool enabled = true,
Implementation
FormeSlider({
double? initialValue,
required String name,
bool readOnly = false,
required this.min,
required this.max,
Key? key,
int? order,
bool quietlyValidate = false,
/// used for [FormeInputDecorator], if you specific a [FormeFieldDecorator] , this will not work
InputDecoration? decoration,
FormeFieldDecorator<double>? decorator,
SemanticFormatterCallback? semanticFormatterCallback,
ValueChanged<double>? onChangeStart,
ValueChanged<double>? onChangeEnd,
ValueChanged<double>? onChanged,
int? divisions,
Color? activeColor,
Color? inactiveColor,
SliderThemeData? sliderThemeData,
MouseCursor? mouseCursor,
FormeLabelRender? labelRender,
Duration? asyncValidatorDebounce,
AutovalidateMode? autovalidateMode,
FormeValueChanged<double>? onValueChanged,
FormeFocusChanged<double>? onFocusChanged,
FormeFieldValidationChanged<double>? onValidationChanged,
FormeFieldInitialed<double>? onInitialed,
FormeFieldSetter<double>? onSaved,
FormeValidator<double>? validator,
FormeAsyncValidator<double>? asyncValidator,
bool registrable = true,
bool enabled = true,
}) : super(
enabled: enabled,
registrable: registrable,
order: order,
quietlyValidate: quietlyValidate,
asyncValidatorDebounce: asyncValidatorDebounce,
autovalidateMode: autovalidateMode,
onValueChanged: onValueChanged,
onFocusChanged: onFocusChanged,
onValidationChanged: onValidationChanged,
onInitialed: onInitialed,
onSaved: onSaved,
validator: validator,
asyncValidator: asyncValidator,
key: key,
readOnly: readOnly,
name: name,
initialValue: initialValue ?? min,
decorator: decorator ??
(decoration == null
? null
: FormeInputDecoratorBuilder(decoration: decoration)),
builder: (baseState) {
final _FormeSliderState state = baseState as _FormeSliderState;
final bool readOnly = state.readOnly;
final Widget slider = ValueListenableBuilder<double?>(
valueListenable: state.notifier,
builder: (context, _value, child) {
final String? sliderLabel =
labelRender == null ? null : labelRender(state.value);
SliderThemeData _sliderThemeData =
sliderThemeData ?? SliderTheme.of(state.context);
if (_sliderThemeData.thumbShape == null) {
_sliderThemeData = _sliderThemeData.copyWith(
thumbShape: CustomSliderThumbCircle(value: state.value));
}
return SliderTheme(
data: _sliderThemeData,
child: Slider(
value: state.value,
min: min,
max: max,
focusNode: state.focusNode,
label: sliderLabel,
divisions: divisions ?? (max - min).floor(),
activeColor: activeColor,
inactiveColor: inactiveColor,
onChangeStart: (v) {
state.focusNode.requestFocus();
onChangeStart?.call(v);
},
onChangeEnd: (v) {
state.didChange(v);
onChangeEnd?.call(v);
},
semanticFormatterCallback: semanticFormatterCallback,
mouseCursor: mouseCursor,
onChanged: readOnly
? null
: (double value) {
state.updateValue(value);
onChanged?.call(value);
},
),
);
},
);
return slider;
},
);