import 'package:flutter/material.dart'; import 'package:flutter_datetime_picker_plus/flutter_datetime_picker_plus.dart' as datatTimePicker; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_svg/svg.dart'; import 'package:intl/intl.dart'; import '../../../themes/app_colors.dart'; import '../../../themes/styles_text.dart'; import '../../../utils/app_images.dart'; class DatePickerWidget extends StatefulWidget { final bool isEnable; final DateTime initDateTime; final DateTime? minDate; final bool isMinDate; SvgPicture? icon; final bool isAcceptSelectPassDate; final bool isShowTime; final Function(DateTime? selectedDateTimeLocal) onUpdateDateTime; DatePickerWidget({ required this.initDateTime, required this.onUpdateDateTime, this.minDate, this.isMinDate = false, this.isEnable = true, this.icon, this.isAcceptSelectPassDate = true, this.isShowTime = false, }); @override _DatePickerWidgetState createState() => _DatePickerWidgetState(); } class _DatePickerWidgetState extends State { late DateTime selectedDate; @override void initState() { super.initState(); } @override Widget build(BuildContext context) { selectedDate = widget.initDateTime; print('--- min date ----'); print(widget.isMinDate ? DateTime.parse(widget.minDate.toString()) : DateTime(DateTime.now().year - 5)); return InkWell( onTap: widget.isEnable ? () { widget.isShowTime ? datatTimePicker.DatePicker.showDateTimePicker( context, showTitleActions: true, minTime: DateTime(DateTime.now().year - 5), maxTime: DateTime(DateTime.now().year + 5), onChanged: (date) {}, onConfirm: (date) { if (date != null) { if (widget.isAcceptSelectPassDate) { } else { var now = DateTime.now(); if (date.isBefore( DateTime(now.year, now.month, now.day, 00, 00, 00), )) { return; } } widget.onUpdateDateTime(date); setState(() { selectedDate = date; }); } }, currentTime: selectedDate, locale: datatTimePicker.LocaleType.vi, ) : showDatePicker( context: context, initialDate: selectedDate, firstDate: DateTime(DateTime.now().year - 5), lastDate: DateTime(DateTime.now().year + 5), ).then((date) { if (date != null) { if (widget.isAcceptSelectPassDate) { } else { var now = DateTime.now(); if (date.isBefore( DateTime(now.year, now.month, now.day, 00, 00, 00), )) { return; } } widget.onUpdateDateTime(date); setState(() { selectedDate = date; }); } }); } : null, child: Container( height: 48.h, decoration: BoxDecoration( borderRadius: BorderRadius.circular(12), border: Border.all( color: AppColors.neutral4, width: 1, ), color: widget.isEnable ? Colors.white : Colors.transparent, ), padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10), child: Row( children: [ Expanded( child: Text( widget.isShowTime ? DateFormat('dd/MM/yyyy HH:mm').format(selectedDate) : DateFormat('dd/MM/yyyy').format(selectedDate), style: StylesText.body6, textAlign: TextAlign.start, ), ), SizedBox( child: widget.icon ?? SvgPicture.asset( AssetSVG.icCalendar, ), ) ], ), ), ); } }