FormeCupertinoTimerField constructor

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

Implementation

FormeCupertinoTimerField({
  this.formatter,
  Duration? initialValue,
  required String name,
  bool readOnly = false,
  Key? key,
  Widget? confirmWidget,
  Widget? cancelWidget,
  this.minuteInterval = 1,
  this.secondInterval = 1,
  this.mode = CupertinoTimerPickerMode.hms,
  Alignment alignment = Alignment.center,
  Color? backgroundColor,
  int? maxLines = 1,
  int? order,
  ImageFilter? filter,
  Color barrierColor = kCupertinoModalBarrierColor,
  bool barrierDismissible = true,
  bool useRootNavigator = true,
  bool? semanticsDismissible,
  RouteSettings? routeSettings,
  VoidCallback? beforeOpen,
  VoidCallback? afterClose,
  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,
  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,
  Iterable<String>? autofillHints,
  bool borderless = false,
  bool quietlyValidate = false,
  Duration? asyncValidatorDebounce,
  AutovalidateMode? autovalidateMode,
  FormeFieldStatusChanged<Duration?>? onStatusChanged,
  FormeFieldInitialed<Duration?>? onInitialed,
  FormeFieldSetter<Duration?>? onSaved,
  FormeValidator<Duration?>? validator,
  FormeAsyncValidator<Duration?>? asyncValidator,
  FormeFieldDecorator<Duration?>? decorator,
  bool registrable = true,
  bool enableIMEPersonalizedLearning = true,
  double? height = 216,
  FormeFieldValueUpdater<Duration?>? valueUpdater,
  FormeFieldValidationFilter<Duration?>? validationFilter,
  FocusNode? focusNode,
}) : super(
        focusNode: focusNode,
        validationFilter: validationFilter,
        valueUpdater: valueUpdater,
        registrable: registrable,
        enabled: enabled,
        readOnly: readOnly,
        decorator: decorator,
        quietlyValidate: quietlyValidate,
        asyncValidatorDebounce: asyncValidatorDebounce,
        autovalidateMode: autovalidateMode,
        onStatusChanged: onStatusChanged,
        onInitialed: onInitialed,
        onSaved: onSaved,
        validator: validator,
        asyncValidator: asyncValidator,
        order: order,
        key: key,
        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 _FormeCupertinoTimerFieldState).textEditingController;

          void pickDuration() {
            state.duration = null;
            beforeOpen?.call();
            showCupertinoModalPopup<dynamic>(
              context: state.context,
              builder: (context) {
                return CupertinoActionSheet(
                  actions: [
                    SizedBox(
                      height: height,
                      child: CupertinoTimerPicker(
                        minuteInterval: minuteInterval,
                        secondInterval: secondInterval,
                        backgroundColor: backgroundColor,
                        alignment: alignment,
                        initialTimerDuration: state.value ?? Duration.zero,
                        mode: mode,
                        onTimerDurationChanged: (Duration timer) {
                          state.duration = timer;
                        },
                      ),
                    ),
                    CupertinoActionSheetAction(
                      child: cancelWidget ??
                          const Text('Cancel',
                              style: TextStyle(
                                color: CupertinoColors.systemRed,
                              )),
                      onPressed: () {
                        Navigator.of(context).pop();
                      },
                    ),
                    CupertinoActionSheetAction(
                      child: confirmWidget ?? const Text('Done'),
                      onPressed: () {
                        if (state.duration == null) {
                          if (state.value == null) {
                            state.didChange(Duration.zero);
                          }
                        } else {
                          state.didChange(state.duration);
                        }
                        state.duration = null;
                        Navigator.of(context).pop();
                      },
                    ),
                  ],
                );
              },
              barrierColor: barrierColor,
              filter: filter,
              barrierDismissible: barrierDismissible,
              useRootNavigator: useRootNavigator,
              semanticsDismissible: semanticsDismissible,
              routeSettings: routeSettings,
            ).whenComplete(() {
              state.focusNode.requestFocus();
              afterClose?.call();
            });
          }

          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,
            textInputAction: textInputAction,
            textCapitalization: textCapitalization,
            style: style,
            strutStyle: strutStyle,
            textAlign: textAlign,
            textAlignVertical: textAlignVertical,
            readOnly: true,
            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,
            onEditingComplete: onEditingComplete,
            cursorWidth: cursorWidth,
            cursorHeight: cursorHeight,
            cursorRadius: cursorRadius,
            cursorColor: cursorColor,
            selectionHeightStyle: selectionHeightStyle,
            selectionWidthStyle: selectionWidthStyle,
            keyboardAppearance: keyboardAppearance,
            scrollPadding: scrollPadding,
            dragStartBehavior: dragStartBehavior,
            enableInteractiveSelection: enableInteractiveSelection,
            selectionControls: selectionControls,
            onTap: readOnly ? null : pickDuration,
            scrollController: scrollController,
            scrollPhysics: scrollPhysics,
            autofillHints: readOnly ? null : autofillHints,
            borderless: borderless,
          );
        },
      );