CustomDateField constructor
CustomDateField({
- Key? key,
- DateTime? initialValue,
- FormFieldValidator<
DateTime> ? validator, - AutovalidateMode? autovalidateMode,
- DatePickerType type = DatePickerType.spin,
- DateTime? firstDate,
- DateTime? lastDate,
- CustomDatePickerThemeData theme = CustomDatePickerThemeData.minimal,
- String label = 'Date',
- ValueChanged<
DateTime?> ? onChanged,
Implementation
CustomDateField({
super.key,
super.initialValue,
super.validator,
super.autovalidateMode,
DatePickerType type = DatePickerType.spin,
DateTime? firstDate,
DateTime? lastDate,
CustomDatePickerThemeData theme = CustomDatePickerThemeData.minimal,
String label = 'Date',
ValueChanged<DateTime?>? onChanged,
}) : super(
builder: (field) {
assert(
type != DatePickerType.range,
'Use CustomDateRangeField for a start and end date.',
);
final engine = SelectionEngine(
firstDate: firstDate,
lastDate: lastDate,
);
return CustomDatePickerTheme(
data: theme,
child: type == DatePickerType.input
? DateInputField(
engine: engine,
label: label,
value: field.value,
formError: field.errorText,
onChanged: (date) {
field.didChange(date);
onChanged?.call(date);
},
)
: _SelectableDateField(
label: label,
value: field.value,
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 showCustomDatePicker(
context: fieldContext,
type: type,
initialDate: field.value,
firstDate: firstDate,
lastDate: lastDate,
theme: theme,
);
if (picked == null) return;
field.didChange(picked);
onChanged?.call(picked);
},
),
);
},
);