CustomTimeField constructor

CustomTimeField({
  1. Key? key,
  2. TimeOfDay? initialValue,
  3. FormFieldValidator<TimeOfDay>? validator,
  4. AutovalidateMode? autovalidateMode,
  5. TimePickerType type = TimePickerType.spin,
  6. bool use24Hour = true,
  7. int minuteInterval = 1,
  8. CustomDatePickerThemeData theme = CustomDatePickerThemeData.minimal,
  9. String label = 'Time',
  10. ValueChanged<TimeOfDay?>? onChanged,
})

Implementation

CustomTimeField({
  super.key,
  super.initialValue,
  super.validator,
  super.autovalidateMode,
  TimePickerType type = TimePickerType.spin,
  bool use24Hour = true,
  int minuteInterval = 1,
  CustomDatePickerThemeData theme = CustomDatePickerThemeData.minimal,
  String label = 'Time',
  ValueChanged<TimeOfDay?>? onChanged,
}) : super(
       builder: (field) {
         return CustomDatePickerTheme(
           data: theme,
           child: type == TimePickerType.input
               ? TimeInputField(
                   label: label,
                   value: field.value,
                   use24Hour: use24Hour,
                   minuteInterval: minuteInterval,
                   formError: field.errorText,
                   onChanged: (time) {
                     field.didChange(time);
                     onChanged?.call(time);
                   },
                 )
               : _SelectableTimeField(
                   label: label,
                   value: field.value,
                   use24Hour: use24Hour,
                   errorText: field.errorText,
                   onClear: field.value == null
                       ? null
                       : () {
                           field.didChange(null);
                           onChanged?.call(null);
                         },
                   onTap: () async {
                     final fieldContext = field.context;
                     if (kIsWeb) {
                       await Future<void>.delayed(
                         const Duration(milliseconds: 150),
                       );
                     }
                     if (!fieldContext.mounted) return;
                     final picked = await showCustomTimePicker(
                       context: fieldContext,
                       type: type,
                       initialTime: field.value,
                       use24Hour: use24Hour,
                       minuteInterval: minuteInterval,
                       theme: theme,
                     );
                     if (picked == null) return;
                     field.didChange(picked);
                     onChanged?.call(picked);
                   },
                 ),
         );
       },
     );