FormeCupertinoDateTimeField constructor

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

Implementation

FormeCupertinoDateTimeField({
  this.formatter,
  this.type = FormeDateTimeType.date,
  this.maximumDate,
  this.minimumDate,
  DateTime? initialValue,
  required String name,
  bool readOnly = false,
  bool use24hFormat = false,
  this.minimumYear = 1,
  this.maximumYear,
  this.minuteInterval = 1,
  ImageFilter? filter,
  Color barrierColor = kCupertinoModalBarrierColor,
  bool barrierDismissible = true,
  bool useRootNavigator = true,
  bool? semanticsDismissible,
  RouteSettings? routeSettings,
  VoidCallback? beforeOpen,
  VoidCallback? afterClose,
  Color? backgroundColor,
  double height = 216,
  Widget? confirmWidget,
  Widget? backWidget,
  Widget? cancelWidget,
  Key? key,
  FormeFieldDecorator<DateTime?>? decorator,
  int? maxLines = 1,
  int? order,
  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<DateTime?>? onStatusChanged,
  FormeFieldInitialed<DateTime?>? onInitialed,
  FormeFieldSetter<DateTime?>? onSaved,
  FormeValidator<DateTime?>? validator,
  FormeAsyncValidator<DateTime?>? asyncValidator,
  bool registrable = true,
  bool enableIMEPersonalizedLearning = true,
  FormeFieldValueUpdater<DateTime?>? valueUpdater,
  FormeFieldValidationFilter<DateTime?>? validationFilter,
  FocusNode? focusNode,
}) : super(
        focusNode: focusNode,
        validationFilter: validationFilter,
        valueUpdater: valueUpdater,
        registrable: registrable,
        readOnly: readOnly,
        enabled: enabled,
        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 _FormeCupertinoDateFieldState).textEditingController;

          void pickTime() {
            beforeOpen?.call();
            showCupertinoModalPopup<dynamic>(
              context: state.context,
              builder: (context) => _PickerSheet(
                height: height,
                confirmWidget: confirmWidget,
                backWidget: backWidget,
                cancelWidget: cancelWidget,
                backgroundColor: backgroundColor,
                maximumDate: maximumDate,
                minimumDate: minimumDate,
                minimumYear: minimumYear,
                maximumYear: maximumYear,
                minuteInterval: minuteInterval,
                use24hFormat: use24hFormat,
                type: type,
                initialDateTime: state.initialDateTime,
                onChanged: (datetime) {
                  Navigator.of(context).pop();
                  state.didChange(datetime);
                },
              ),
              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 : pickTime,
            scrollController: scrollController,
            scrollPhysics: scrollPhysics,
            autofillHints: readOnly ? null : autofillHints,
            borderless: borderless,
          );
        },
      );