@@ -20,6 +20,14 @@ class _DateTimePickersViewState extends State<DateTimePickersView> {
2020 ThemedMonth ? _selectedMonth;
2121 List <ThemedMonth > _selectedMonthRange = [];
2222
23+ late Location tz;
24+ @override
25+ void initState () {
26+ super .initState ();
27+ tz = getLocation ('Asia/Tokyo' );
28+ setTimezone (tz);
29+ }
30+
2331 @override
2432 Widget build (BuildContext context) {
2533 return Layout (
@@ -43,10 +51,20 @@ class _DateTimePickersViewState extends State<DateTimePickersView> {
4351 ),
4452 const SizedBox (height: 10 ),
4553 const Text ("Classic picker" ),
54+
4655 ThemedDatePicker (
4756 labelText: "Example label" ,
4857 value: _selectedDate,
49- onChanged: (val) => setState (() => _selectedDate = val),
58+ onChanged: (val) {
59+ setState (() => _selectedDate = val);
60+ if (val is TZDateTime ) {
61+ debugPrint ('Selected date: $val (TZDateTime) in timezone ${tz .name }' );
62+ _selectedDate = val;
63+ } else {
64+ _selectedDate = TZDateTime .from (val, tz);
65+ debugPrint ('Selected date: $_selectedDate (converted to TZDateTime) in timezone ${tz .name }' );
66+ }
67+ },
5068 ),
5169 const Text ("And the range variant" ),
5270 ThemedDateRangePicker (
@@ -99,16 +117,54 @@ class _DateTimePickersViewState extends State<DateTimePickersView> {
99117 ),
100118 const SizedBox (height: 10 ),
101119 const Text ("Classic picker" ),
120+ if (kDebugMode) ...[
121+ if (_selectedDateTime is TZDateTime )
122+ Text ('Selected date and time: $_selectedDateTime (TZDateTime) in timezone ${tz .name }' )
123+ else if (_selectedDateTime != null )
124+ Text ('Selected date and time: $_selectedDateTime (DateTime, not converted to TZDateTime)' ),
125+ ],
102126 ThemedDateTimePicker (
103127 labelText: "Example label" ,
104128 value: _selectedDateTime,
105- onChanged: (val) => setState (() => _selectedDateTime = val),
129+ onChanged: (val) {
130+ debugPrint ("Raw selected date and time: $val (${val .runtimeType })" );
131+ if (val is TZDateTime ) {
132+ debugPrint ('Selected date and time: $val (TZDateTime) in timezone ${tz .name }' );
133+ setState (() => _selectedDateTime = val);
134+ } else {
135+ final converted = TZDateTime .from (val, tz);
136+ debugPrint ('Selected date and time: $converted (converted to TZDateTime) in timezone ${tz .name }' );
137+ setState (() => _selectedDateTime = converted);
138+ }
139+ },
106140 ),
107141 const Text ("And the range variant" ),
142+ if (kDebugMode) ...[
143+ for (final entry in _selectedDateTimeRange.asMap ().entries) ...[
144+ if (entry.value is TZDateTime ) ...[
145+ Text ('[${entry .key }] Selected date and time: ${entry .value } (TZDateTime) in timezone ${tz .name }' ),
146+ ] else ...[
147+ Text ('[${entry .key }] Selected date and time: ${entry .value } (DateTime, not converted to TZDateTime)' ),
148+ ],
149+ ],
150+ ],
108151 ThemedDateTimeRangePicker (
109152 labelText: "Example label" ,
110153 value: _selectedDateTimeRange,
111- onChanged: (val) => setState (() => _selectedDateTimeRange = val),
154+ onChanged: (val) {
155+ debugPrint ("Raw selected date and time range: $val " );
156+ final convertedRange = val.map ((dateTime) {
157+ if (dateTime is TZDateTime ) {
158+ debugPrint ('Selected date and time: $dateTime (TZDateTime) in timezone ${tz .name }' );
159+ return dateTime;
160+ } else {
161+ final converted = TZDateTime .from (dateTime, tz);
162+ debugPrint ('Selected date and time: $converted (converted to TZDateTime) in timezone ${tz .name }' );
163+ return converted;
164+ }
165+ }).toList ();
166+ setState (() => _selectedDateTimeRange = convertedRange);
167+ },
112168 ),
113169 const Text ("Stepped variant, after selecting the date, you will select the time" ),
114170 ThemedDateTimeSteppedPicker (
0 commit comments