import 'package:flutter/material.dart'; import 'package:enaklo_pos/core/assets/assets.gen.dart'; import 'package:enaklo_pos/core/constants/colors.dart'; import 'package:enaklo_pos/core/extensions/date_time_ext.dart'; class CustomDatePicker extends StatefulWidget { final void Function(DateTime selectedDate)? onDateSelected; final DateTime initialDate; final Widget? prefix; const CustomDatePicker({ super.key, required this.initialDate, this.onDateSelected, this.prefix, }); @override State createState() => _CustomDatePickerState(); } class _CustomDatePickerState extends State { late DateTime selectedDate; @override void initState() { selectedDate = widget.initialDate; super.initState(); } Future _selectDate(BuildContext context) async { final DateTime? picked = await showDatePicker( context: context, initialDate: selectedDate, firstDate: DateTime(2000), lastDate: DateTime(2101), ); if (picked != null && picked != selectedDate) { setState(() { selectedDate = picked; }); if (widget.onDateSelected != null) { widget.onDateSelected!(picked); } } } @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( width: 500, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Flexible( child: GestureDetector( onTap: () => _selectDate(context), child: AbsorbPointer( child: TextFormField( style: const TextStyle( color: AppColors.black, fontWeight: FontWeight.bold, ), readOnly: true, controller: TextEditingController( text: selectedDate.toFormattedDate2(), ), decoration: InputDecoration( suffixIcon: Padding( padding: const EdgeInsets.symmetric( vertical: 8, horizontal: 16), child: Assets.icons.calendar.svg(), ), prefix: widget.prefix, border: OutlineInputBorder( borderRadius: BorderRadius.circular(6.0), borderSide: const BorderSide(color: AppColors.stroke), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(6.0), borderSide: const BorderSide(color: AppColors.stroke), ), ), ), ), ), ), ], ), ), ], ); } }