FormeRangeSlider constructor
FormeRangeSlider({
- RangeValues? initialValue,
- required String name,
- bool readOnly = false,
- required double min,
- required double max,
- Key? key,
- InputDecoration? decoration,
- FormeFieldDecorator<
RangeValues> ? decorator, - int? order,
- bool quietlyValidate = false,
- SemanticFormatterCallback? semanticFormatterCallback,
- ValueChanged<
RangeValues> ? onChangeStart, - ValueChanged<
RangeValues> ? onChangeEnd, - ValueChanged<
RangeValues> ? onChanged, - int? divisions,
- Color? activeColor,
- Color? inactiveColor,
- SliderThemeData? sliderThemeData,
- FormRangeLabelRender? rangeLabelRender,
- Duration? asyncValidatorDebounce,
- AutovalidateMode? autovalidateMode,
- FormeFieldStatusChanged<
RangeValues?> ? onStatusChanged, - dynamic onInitialed,
- FormeFieldSetter<
RangeValues> ? onSaved, - FormeValidator<
RangeValues> ? validator, - FormeAsyncValidator<
RangeValues> ? asyncValidator, - bool registrable = true,
- bool enabled = true,
- dynamic valueUpdater,
- FormeFieldValidationFilter<
RangeValues> ? validationFilter, - FocusNode? focusNode,
Implementation
FormeRangeSlider({
RangeValues? initialValue,
required String name,
bool readOnly = false,
required this.min,
required this.max,
Key? key,
InputDecoration? decoration,
FormeFieldDecorator<RangeValues>? decorator,
int? order,
bool quietlyValidate = false,
SemanticFormatterCallback? semanticFormatterCallback,
ValueChanged<RangeValues>? onChangeStart,
ValueChanged<RangeValues>? onChangeEnd,
ValueChanged<RangeValues>? onChanged,
int? divisions,
Color? activeColor,
Color? inactiveColor,
SliderThemeData? sliderThemeData,
FormRangeLabelRender? rangeLabelRender,
Duration? asyncValidatorDebounce,
AutovalidateMode? autovalidateMode,
FormeFieldStatusChanged<RangeValues?>? onStatusChanged,
FormeFieldInitialed<RangeValues>? onInitialed,
FormeFieldSetter<RangeValues>? onSaved,
FormeValidator<RangeValues>? validator,
FormeAsyncValidator<RangeValues>? asyncValidator,
bool registrable = true,
bool enabled = true,
FormeFieldValueUpdater<RangeValues>? valueUpdater,
FormeFieldValidationFilter<RangeValues>? validationFilter,
FocusNode? focusNode,
}) : super(
focusNode: focusNode,
validationFilter: validationFilter,
valueUpdater: valueUpdater,
enabled: enabled,
registrable: registrable,
quietlyValidate: quietlyValidate,
asyncValidatorDebounce: asyncValidatorDebounce,
autovalidateMode: autovalidateMode,
onStatusChanged: onStatusChanged,
onInitialed: onInitialed,
onSaved: onSaved,
validator: validator,
asyncValidator: asyncValidator,
order: order,
decorator: decorator ??
(decoration == null
? null
: FormeInputDecoratorBuilder(decoration: decoration)),
key: key,
readOnly: readOnly,
name: name,
initialValue: initialValue ?? RangeValues(min, max),
builder: (baseState) {
final _FormeRangeSliderState state =
baseState as _FormeRangeSliderState;
final bool readOnly = state.readOnly;
final Widget slider = ValueListenableBuilder(
valueListenable: state.notifier,
builder: (context, _value, _child) {
RangeLabels? sliderLabels;
if (rangeLabelRender != null) {
final String start =
rangeLabelRender.startRender(state.value.start);
final String end =
rangeLabelRender.endRender(state.value.end);
sliderLabels = RangeLabels(start, end);
}
SliderThemeData _sliderThemeData =
sliderThemeData ?? SliderTheme.of(state.context);
if (_sliderThemeData.thumbShape == null) {
_sliderThemeData = _sliderThemeData.copyWith(
rangeThumbShape:
CustomRangeSliderThumbCircle(value: state.value));
}
return SliderTheme(
data: _sliderThemeData,
child: RangeSlider(
values: state.value,
min: min,
max: max,
divisions: divisions ?? (max - min).floor(),
labels: sliderLabels,
activeColor: activeColor,
inactiveColor: inactiveColor,
onChangeStart: (v) {
state.focusNode.requestFocus();
onChangeStart?.call(v);
},
onChangeEnd: (v) {
state.didChange(v);
onChangeEnd?.call(v);
},
semanticFormatterCallback: semanticFormatterCallback,
onChanged: readOnly
? null
: (RangeValues values) {
state.updateValue(values);
onChanged?.call(values);
},
),
);
});
return Focus(
focusNode: state.focusNode,
child: slider,
);
});