enaklo-flutter/lib/presentation/components/field/date_text_form_field.dart
2025-09-18 08:48:36 +07:00

60 lines
1.3 KiB
Dart

part of 'field.dart';
class DatePickerField extends StatefulWidget {
final String label;
final DateTime? selectedDate;
final Function(DateTime) onDateSelected;
const DatePickerField({
super.key,
required this.label,
required this.onDateSelected,
this.selectedDate,
});
@override
State<DatePickerField> createState() => _DatePickerFieldState();
}
class _DatePickerFieldState extends State<DatePickerField> {
DateTime? _selectedDate;
@override
void initState() {
super.initState();
_selectedDate = widget.selectedDate;
}
Future<void> _selectDate() async {
final picked = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2000),
lastDate: DateTime(2050),
);
if (picked != null && picked != _selectedDate) {
setState(() {
_selectedDate = picked;
});
widget.onDateSelected(picked);
}
}
@override
Widget build(BuildContext context) {
return AppTextFormField(
title: widget.label,
hintText: 'Pilih tanggal',
readOnly: true,
controller: TextEditingController(text: _selectedDate?.toServerDate),
onChanged: (value) {
widget.onDateSelected(_selectedDate!);
},
onTap: () {
_selectDate();
},
);
}
}