SpinButtonFormField<T extends Comparable> constructor

SpinButtonFormField<T extends Comparable>({
  1. Key? key,
  2. required T? value,
  3. required LabelWidgetCallback<T> labelCallback,
  4. Widget? incrementIcon,
  5. Widget? decrementIcon,
  6. InputDecoration? decoration,
  7. FocusNode? incrementFocusNode,
  8. FocusNode? decrementFocusNode,
  9. bool incrementAutofocus = false,
  10. bool decrementAutofocus = false,
  11. ValueChanged<T?>? onChanged,
  12. FormFieldSetter<T>? onSaved,
  13. FormFieldValidator<T>? validator,
  14. AutovalidateMode? autovalidateMode,
  15. SpinActionSelect<T>? onIncrementSelected,
  16. SpinActionSelect<T>? onDecrementSelected,
})

Implementation

SpinButtonFormField({
  super.key,
  required T? value,
  required LabelWidgetCallback<T> labelCallback,
  Widget? incrementIcon,
  Widget? decrementIcon,
  InputDecoration? decoration,
  FocusNode? incrementFocusNode,
  FocusNode? decrementFocusNode,
  bool incrementAutofocus = false,
  bool decrementAutofocus = false,
  this.onChanged,
  super.onSaved,
  super.validator,
  AutovalidateMode? autovalidateMode,
  SpinActionSelect<T>? onIncrementSelected,
  SpinActionSelect<T>? onDecrementSelected,
}) : super(
        initialValue: value,
        autovalidateMode: autovalidateMode ?? AutovalidateMode.disabled,
        builder: (state) {
          void onIncrementPressed() {
            assert(onChanged != null && onIncrementSelected != null);
            final value = onIncrementSelected!();
            state.didChange(value);
          }

          void onDecrementPressed() {
            assert(onChanged != null && onDecrementSelected != null);
            final value = onDecrementSelected!();
            state.didChange(value);
          }

          final isEnabled = onChanged != null;

          return SpinButton(
            value: state.value,
            labelCallback: labelCallback,
            incrementIcon: incrementIcon,
            decrementIcon: decrementIcon,
            incrementFocusNode: incrementFocusNode,
            decrementFocusNode: decrementFocusNode,
            incrementAutofocus: incrementAutofocus,
            decrementAutofocus: decrementAutofocus,
            decoration: (decoration ?? const InputDecoration()).copyWith(
              errorText: state.errorText,
              enabled: isEnabled,
            ),
            onIncrementPressed: (isEnabled && onIncrementSelected != null)
                ? onIncrementPressed
                : null,
            onDecrementPressed: (isEnabled && onDecrementSelected != null)
                ? onDecrementPressed
                : null,
          );
        },
      );