buildWidget method

  1. @override
Widget buildWidget(
  1. BuildContext context
)
override

build your widget here

Implementation

@override
Widget buildWidget(BuildContext context) {
  int decimalPlaces = calculateDecimalPlaces(widget.controller.minValue,
      widget.controller.maxValue, widget.controller.divisions);

  return InputWrapper(
    type: EnsembleSlider.type,
    controller: widget.controller,
    widget: FormField<double>(
      key: validatorKey,
      validator: (value) {
        if (widget.controller.required) {
          if (widget.controller.enableRange) {
            if (widget.controller.startValue == widget.controller.minValue &&
                widget.controller.endValue == widget.controller.minValue) {
              return Utils.translateWithFallback(
                  'ensemble.input.required', 'This field is required');
            }
          } else if (widget.controller.value == widget.controller.minValue) {
            return Utils.translateWithFallback(
                'ensemble.input.required', 'This field is required');
          }
        }
        return null;
      },
      builder: (FormFieldState<double> field) {
        SliderThemeData themeData = SliderTheme.of(context).copyWith(
          // Track Colors
          trackShape: widget.controller.trackStyle.getTrackShape(),
          trackHeight: widget.controller.trackHeight ??
              widget.controller.trackStyle.trackHeight,
          activeTrackColor: widget.controller.activeTrackColor ??
              widget.controller.trackStyle.activeTrackColor,
          inactiveTrackColor: widget.controller.inactiveTrackColor ??
              widget.controller.trackStyle.inactiveTrackColor,
          secondaryActiveTrackColor:
              widget.controller.trackStyle.secondaryActiveTrackColor,
          disabledActiveTrackColor:
              widget.controller.trackStyle.disabledActiveTrackColor,
          disabledInactiveTrackColor:
              widget.controller.trackStyle.disabledInactiveTrackColor,
          disabledSecondaryActiveTrackColor:
              widget.controller.trackStyle.disabledSecondaryActiveTrackColor,

          // Tick Mark Colors
          tickMarkShape: widget.controller.tickMarkStyle.getTickMarkShape(
              widget.controller.trackHeight ??
                  widget.controller.trackStyle.trackHeight ??
                  2.0),
          activeTickMarkColor: widget.controller.activeTickMarkColor ??
              widget.controller.tickMarkStyle.activeColor,
          inactiveTickMarkColor: widget.controller.inactiveTickMarkColor ??
              widget.controller.tickMarkStyle.inactiveColor,
          disabledActiveTickMarkColor:
              widget.controller.tickMarkStyle.disabledActiveColor,
          disabledInactiveTickMarkColor:
              widget.controller.tickMarkStyle.disabledInactiveColor,

          // Thumb Properties
          thumbShape: widget.controller.thumbStyle.getThumbShape(),
          thumbColor: widget.controller.thumbColor ??
              widget.controller.thumbStyle.thumbColor,
          disabledThumbColor: widget.controller.thumbStyle.disabledThumbColor,

          // Overlay Properties
          overlayShape: widget.controller.overlayStyle.getOverlayShape(),
          overlayColor: widget.controller.overlayStyle.getOverlayColor(),

          // Value Indicator Properties
          showValueIndicator:
              widget.controller.valueIndicatorStyle.visibility,
          valueIndicatorColor: widget.controller.valueIndicatorStyle.color ??
              widget.controller.thumbColor ??
              widget.controller.thumbStyle.thumbColor,
          valueIndicatorTextStyle:
              widget.controller.valueIndicatorStyle.textStyle,
          valueIndicatorShape:
              widget.controller.valueIndicatorStyle.getIndicatorShape(),
        );

        return SliderTheme(
          data: themeData,
          child: widget.controller.enableRange
              ? _buildRangeSlider(context, decimalPlaces)
              : _buildSlider(context, decimalPlaces)
        );
      },
    ),
  );
}