CustomTimeField constructor
CustomTimeField({
- Key? key,
- TimeOfDay? initialValue,
- FormFieldValidator<
TimeOfDay> ? validator, - AutovalidateMode? autovalidateMode,
- TimePickerType type = TimePickerType.spin,
- bool use24Hour = true,
- int minuteInterval = 1,
- CustomDatePickerThemeData theme = CustomDatePickerThemeData.minimal,
- String label = 'Time',
- 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);
},
),
);
},
);