@@ -521,6 +521,7 @@ class _DateTimePickerState extends FormFieldState<String> {
521521 String _sValue;
522522 String _sDate = '' ;
523523 String _sTime = '' ;
524+ String _sPeriod = '' ;
524525
525526 @override
526527 DateTimePicker get widget => super .widget as DateTimePicker ;
@@ -548,6 +549,10 @@ class _DateTimePickerState extends FormFieldState<String> {
548549 _sDate = DateFormat ('yyyy-MM-dd' ).format (_dDate);
549550 _sTime = DateFormat ('HH:mm' ).format (_dDate);
550551
552+ if (! widget.use24HourFormat) {
553+ _sTime = DateFormat ('hh:mm a' ).format (_dDate);
554+ }
555+
551556 _timeLabelController.text = _sTime;
552557 _dateLabelController.text = _sDate;
553558
@@ -559,6 +564,10 @@ class _DateTimePickerState extends FormFieldState<String> {
559564
560565 if (widget.type == DateTimePickerType .dateTime && _sTime != '' ) {
561566 lsMask = 'MMM d, yyyy - HH:mm' ;
567+
568+ if (! widget.use24HourFormat) {
569+ lsMask = 'MMM d, yyyy - hh:mm a' ;
570+ }
562571 }
563572
564573 _dateLabelController.text = DateFormat (lsMask).format (_dDate);
@@ -568,7 +577,12 @@ class _DateTimePickerState extends FormFieldState<String> {
568577 _tTime =
569578 TimeOfDay (hour: int .parse (llTime[0 ]), minute: int .parse (llTime[1 ]));
570579 _sTime = lsValue;
571- _timeLabelController.text = _sTime;
580+
581+ if (! widget.use24HourFormat) {
582+ _sPeriod = _tTime.period.index == 0 ? ' AM' : ' PM' ;
583+ }
584+
585+ _timeLabelController.text = _sTime + _sPeriod;
572586 }
573587 }
574588 }
@@ -610,6 +624,10 @@ class _DateTimePickerState extends FormFieldState<String> {
610624 if (lsOldTime != '' ) {
611625 _tTime = TimeOfDay .fromDateTime (_dDate);
612626 _sTime = DateFormat ('HH:mm' ).format (_dDate);
627+
628+ if (! widget.use24HourFormat) {
629+ _sTime = DateFormat ('hh:mm a' ).format (_dDate);
630+ }
613631 }
614632 }
615633
@@ -625,6 +643,10 @@ class _DateTimePickerState extends FormFieldState<String> {
625643
626644 if (widget.type == DateTimePickerType .dateTime && _sTime != '' ) {
627645 lsMask = 'MMM d, yyyy - HH:mm' ;
646+
647+ if (! widget.use24HourFormat) {
648+ lsMask = 'MMM d, yyyy - hh:mm a' ;
649+ }
628650 }
629651
630652 _dateLabelController.text = DateFormat (lsMask).format (_dDate);
@@ -635,7 +657,7 @@ class _DateTimePickerState extends FormFieldState<String> {
635657 _tTime = TimeOfDay (
636658 hour: int .parse (llTime[0 ]), minute: int .parse (llTime[1 ]));
637659 _sTime = lsValue;
638- _timeLabelController.text = _sTime;
660+ _timeLabelController.text = _sTime + _sPeriod ;
639661 }
640662 }
641663 }
@@ -740,6 +762,15 @@ class _DateTimePickerState extends FormFieldState<String> {
740762 if (ltTimePicked != null ) {
741763 String lsHour = ltTimePicked.hour.toString ().padLeft (2 , '0' );
742764 String lsMinute = ltTimePicked.minute.toString ().padLeft (2 , '0' );
765+
766+ if (ltTimePicked.period.index == 0 && lsHour == '12' ) {
767+ lsHour = '00' ;
768+ }
769+
770+ if (! widget.use24HourFormat) {
771+ _sPeriod = ltTimePicked.period.index == 0 ? ' AM' : ' PM' ;
772+ }
773+
743774 _sTime = '$lsHour :$lsMinute ' ;
744775 _tTime = ltTimePicked;
745776
@@ -795,7 +826,8 @@ class _DateTimePickerState extends FormFieldState<String> {
795826 routeSettings: widget.routeSettings,
796827 builder: (BuildContext context, Widget child) {
797828 return MediaQuery (
798- data: MediaQuery .of (context).copyWith (alwaysUse24HourFormat: true ),
829+ data: MediaQuery .of (context)
830+ .copyWith (alwaysUse24HourFormat: widget.use24HourFormat),
799831 child: child,
800832 );
801833 },
@@ -804,8 +836,30 @@ class _DateTimePickerState extends FormFieldState<String> {
804836 if (ltTimePicked != null ) {
805837 String lsHour = ltTimePicked.hour.toString ().padLeft (2 , '0' );
806838 String lsMinute = ltTimePicked.minute.toString ().padLeft (2 , '0' );
839+
840+ if (ltTimePicked.period.index == 0 && lsHour == '12' ) {
841+ lsHour = '00' ;
842+ }
843+
844+ if (! widget.use24HourFormat) {
845+ _sPeriod = ltTimePicked.period.index == 0 ? ' AM' : ' PM' ;
846+ }
847+
807848 _sTime = '$lsHour :$lsMinute ' ;
808849 _tTime = ltTimePicked;
850+ } else {
851+ String lsHour = _tTime.hour.toString ().padLeft (2 , '0' );
852+ String lsMinute = _tTime.minute.toString ().padLeft (2 , '0' );
853+
854+ if (_tTime.period.index == 0 && lsHour == '12' ) {
855+ lsHour = '00' ;
856+ }
857+
858+ if (! widget.use24HourFormat) {
859+ _sPeriod = _tTime.period.index == 0 ? ' AM' : ' PM' ;
860+ }
861+
862+ _sTime = '$lsHour :$lsMinute ' ;
809863 }
810864
811865 String lsOldValue = _sValue;
0 commit comments