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 createState() => _DatePickerFieldState(); } class _DatePickerFieldState extends State { DateTime? _selectedDate; @override void initState() { super.initState(); _selectedDate = widget.selectedDate; } Future _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(); }, ); } }