FormeCupertinoNumberField constructor

FormeCupertinoNumberField({
  1. Key? key,
  2. int decimal = 0,
  3. double? max,
  4. bool allowNegative = false,
  5. num? initialValue,
  6. required String name,
  7. bool readOnly = false,
  8. int? order,
  9. int? maxLines = 1,
  10. BoxDecoration? decoration = defaultTextFieldDecoration,
  11. EdgeInsetsGeometry padding = const EdgeInsets.all(6.0),
  12. String? placeholder,
  13. TextStyle placeholderStyle = const TextStyle(fontWeight: FontWeight.w400, color: CupertinoColors.placeholderText),
  14. Widget? prefix,
  15. OverlayVisibilityMode prefixMode = OverlayVisibilityMode.always,
  16. Widget? suffix,
  17. OverlayVisibilityMode suffixMode = OverlayVisibilityMode.always,
  18. OverlayVisibilityMode clearButtonMode = OverlayVisibilityMode.never,
  19. TextInputAction? textInputAction,
  20. TextCapitalization textCapitalization = TextCapitalization.none,
  21. TextStyle? style,
  22. StrutStyle? strutStyle,
  23. TextAlign textAlign = TextAlign.start,
  24. ToolbarOptions? toolbarOptions,
  25. TextAlignVertical? textAlignVertical,
  26. bool? showCursor,
  27. bool autofocus = false,
  28. String obscuringCharacter = '•',
  29. bool obscureText = false,
  30. bool autocorrect = true,
  31. SmartDashesType? smartDashesType,
  32. SmartQuotesType? smartQuotesType,
  33. bool enableSuggestions = true,
  34. int? minLines,
  35. bool expands = false,
  36. int? maxLength,
  37. MaxLengthEnforcement? maxLengthEnforcement,
  38. VoidCallback? onEditingComplete,
  39. List<TextInputFormatter>? inputFormatters,
  40. bool enabled = true,
  41. double cursorWidth = 2.0,
  42. double? cursorHeight,
  43. Radius cursorRadius = const Radius.circular(2.0),
  44. Color? cursorColor,
  45. BoxHeightStyle selectionHeightStyle = BoxHeightStyle.tight,
  46. BoxWidthStyle selectionWidthStyle = BoxWidthStyle.tight,
  47. Brightness? keyboardAppearance,
  48. EdgeInsets scrollPadding = const EdgeInsets.all(20.0),
  49. bool enableInteractiveSelection = true,
  50. TextSelectionControls? selectionControls,
  51. DragStartBehavior dragStartBehavior = DragStartBehavior.start,
  52. ScrollController? scrollController,
  53. ScrollPhysics? scrollPhysics,
  54. GestureTapCallback? onTap,
  55. Iterable<String>? autofillHints,
  56. bool borderless = false,
  57. bool quietlyValidate = false,
  58. Duration? asyncValidatorDebounce,
  59. AutovalidateMode? autovalidateMode,
  60. FormeFieldStatusChanged<num?>? onStatusChanged,
  61. dynamic onInitialed,
  62. FormeFieldSetter<num?>? onSaved,
  63. FormeValidator<num?>? validator,
  64. FormeAsyncValidator<num?>? asyncValidator,
  65. FormeFieldDecorator<num?>? decorator,
  66. bool registrable = true,
  67. bool enableIMEPersonalizedLearning = true,
  68. dynamic valueUpdater,
  69. FormeFieldValidationFilter<num?>? validationFilter,
  70. FocusNode? focusNode,
})

Implementation

FormeCupertinoNumberField({
  Key? key,
  this.decimal = 0,
  this.max,
  this.allowNegative = false,
  num? initialValue,
  required String name,
  bool readOnly = false,
  int? order,
  int? maxLines = 1,
  BoxDecoration? decoration = defaultTextFieldDecoration,
  EdgeInsetsGeometry padding = const EdgeInsets.all(6.0),
  String? placeholder,
  TextStyle placeholderStyle = const TextStyle(
    fontWeight: FontWeight.w400,
    color: CupertinoColors.placeholderText,
  ),
  Widget? prefix,
  OverlayVisibilityMode prefixMode = OverlayVisibilityMode.always,
  Widget? suffix,
  OverlayVisibilityMode suffixMode = OverlayVisibilityMode.always,
  OverlayVisibilityMode clearButtonMode = OverlayVisibilityMode.never,
  TextInputAction? textInputAction,
  TextCapitalization textCapitalization = TextCapitalization.none,
  TextStyle? style,
  StrutStyle? strutStyle,
  TextAlign textAlign = TextAlign.start,
  ToolbarOptions? toolbarOptions,
  TextAlignVertical? textAlignVertical,
  bool? showCursor,
  bool autofocus = false,
  String obscuringCharacter = '•',
  bool obscureText = false,
  bool autocorrect = true,
  SmartDashesType? smartDashesType,
  SmartQuotesType? smartQuotesType,
  bool enableSuggestions = true,
  int? minLines,
  bool expands = false,
  int? maxLength,
  MaxLengthEnforcement? maxLengthEnforcement,
  VoidCallback? onEditingComplete,
  List<TextInputFormatter>? inputFormatters,
  bool enabled = true,
  double cursorWidth = 2.0,
  double? cursorHeight,
  Radius cursorRadius = const Radius.circular(2.0),
  Color? cursorColor,
  BoxHeightStyle selectionHeightStyle = BoxHeightStyle.tight,
  BoxWidthStyle selectionWidthStyle = BoxWidthStyle.tight,
  Brightness? keyboardAppearance,
  EdgeInsets scrollPadding = const EdgeInsets.all(20.0),
  bool enableInteractiveSelection = true,
  TextSelectionControls? selectionControls,
  DragStartBehavior dragStartBehavior = DragStartBehavior.start,
  ScrollController? scrollController,
  ScrollPhysics? scrollPhysics,
  GestureTapCallback? onTap,
  Iterable<String>? autofillHints,
  bool borderless = false,
  bool quietlyValidate = false,
  Duration? asyncValidatorDebounce,
  AutovalidateMode? autovalidateMode,
  FormeFieldStatusChanged<num?>? onStatusChanged,
  FormeFieldInitialed<num?>? onInitialed,
  FormeFieldSetter<num?>? onSaved,
  FormeValidator<num?>? validator,
  FormeAsyncValidator<num?>? asyncValidator,
  FormeFieldDecorator<num?>? decorator,
  bool registrable = true,
  bool enableIMEPersonalizedLearning = true,
  FormeFieldValueUpdater<num?>? valueUpdater,
  FormeFieldValidationFilter<num?>? validationFilter,
  FocusNode? focusNode,
}) : super(
        focusNode: focusNode,
        validationFilter: validationFilter,
        valueUpdater: valueUpdater,
        registrable: registrable,
        enabled: enabled,
        key: key,
        decorator: decorator,
        quietlyValidate: quietlyValidate,
        asyncValidatorDebounce: asyncValidatorDebounce,
        autovalidateMode: autovalidateMode,
        onStatusChanged: onStatusChanged,
        onInitialed: onInitialed,
        onSaved: onSaved,
        validator: validator,
        asyncValidator: asyncValidator,
        order: order,
        readOnly: readOnly,
        name: name,
        initialValue: initialValue,
        builder: (state) {
          final bool readOnly = state.readOnly;
          final bool enabled = state.enabled;
          final FocusNode focusNode = state.focusNode;
          final TextEditingController textEditingController =
              (state as _NumberFieldState).textEditingController;
          final List<TextInputFormatter> formatters =
              FormeNumberField.numberFormatters(
                  decimal: decimal, allowNegative: allowNegative, max: max);
          if (inputFormatters != null) {
            formatters.addAll(inputFormatters);
          }

          void onChanged(String value) {
            final num? parsed = num.tryParse(value);
            if (parsed != null && parsed != state.value) {
              state.updateController = false;
              state.didChange(parsed);
            } else {
              if (value.isEmpty && state.value != null) {
                state.didChange(null);
              }
            }
          }

          return buildCupertinoTextField(
            enableIMEPersonalizedLearning: enableIMEPersonalizedLearning,
            enabled: enabled,
            focusNode: focusNode,
            textEditingController: textEditingController,
            decoration: decoration,
            padding: padding,
            placeholder: placeholder,
            placeholderStyle: placeholderStyle,
            prefix: prefix,
            prefixMode: prefixMode,
            suffix: suffix,
            suffixMode: suffixMode,
            clearButtonMode: clearButtonMode,
            keyboardType: TextInputType.number,
            textInputAction: textInputAction,
            textCapitalization: textCapitalization,
            style: style,
            strutStyle: strutStyle,
            textAlign: textAlign,
            textAlignVertical: textAlignVertical,
            readOnly: readOnly,
            toolbarOptions: toolbarOptions,
            showCursor: showCursor,
            autofocus: autofocus,
            obscuringCharacter: obscuringCharacter,
            obscureText: obscureText,
            autocorrect: autocorrect,
            smartDashesType: smartDashesType,
            smartQuotesType: smartQuotesType,
            enableSuggestions: enableSuggestions,
            maxLines: maxLines,
            minLines: minLines,
            expands: expands,
            maxLength: maxLength,
            maxLengthEnforcement: maxLengthEnforcement,
            onChanged: onChanged,
            onEditingComplete: onEditingComplete,
            inputFormatters: formatters,
            cursorWidth: cursorWidth,
            cursorHeight: cursorHeight,
            cursorRadius: cursorRadius,
            cursorColor: cursorColor,
            selectionHeightStyle: selectionHeightStyle,
            selectionWidthStyle: selectionWidthStyle,
            keyboardAppearance: keyboardAppearance,
            scrollPadding: scrollPadding,
            dragStartBehavior: dragStartBehavior,
            enableInteractiveSelection: enableInteractiveSelection,
            selectionControls: selectionControls,
            onTap: onTap,
            scrollController: scrollController,
            scrollPhysics: scrollPhysics,
            autofillHints: readOnly ? null : autofillHints,
            borderless: borderless,
          );
        },
      );