This commit is contained in:
Hillel Coren 2020-10-24 22:07:34 +03:00
parent c6e6562805
commit c4812f5b9b
1 changed files with 31 additions and 13 deletions

View File

@ -123,22 +123,40 @@ class _TimePickerState extends State<TimePicker> {
widget.onSelected(null); widget.onSelected(null);
} }
} else { } else {
print('## Value was: $value'); print('## Value was: $value (${value.length})');
if (value.allMatches(':').length < 2) { final initialValue = value;
value += ':00'; value = value.replaceAll(RegExp('[^\\d\:]'), '');
if (value.allMatches(':').length < 2) { value = value.toLowerCase().replaceAll('.', ':');
value += ':00';
final parts = value.split(':');
String dateTimeStr = '';
if (parts.length < 3) {
if (parts.length == 1) {
dateTimeStr = parts[0] + ':00:00';
} else if (parts.length == 2) {
dateTimeStr = parts[0] + ':' + parts[1];
if (parts[1].length == 1) {
dateTimeStr += '0';
} }
dateTimeStr += ':00';
} }
if (initialValue.contains('a')) {
dateTimeStr += ' AM';
} else if (initialValue.contains('p')) {
dateTimeStr += ' PM';
} else {
final store = StoreProvider.of<AppState>(context); final store = StoreProvider.of<AppState>(context);
if (!store.state.company.settings.enableMilitaryTime) { if (!store.state.company.settings.enableMilitaryTime) {
final hour = parseDouble(value.split(':').first); final hour = parseDouble(parts[0]);
value += hour >= 6 ? ' AM' : ' PM'; dateTimeStr += hour > 6 ? ' AM' : ' PM';
}
}
} }
final dateTime = parseTime(value, context); final dateTime = parseTime(dateTimeStr, context);
print('## DATE TIME: $dateTime');
if (dateTime != null) { if (dateTime != null) {
final date = widget.selectedDate; final date = widget.selectedDate;
var selectedDate = DateTime( var selectedDate = DateTime(
@ -148,7 +166,7 @@ class _TimePickerState extends State<TimePicker> {
dateTime.hour, dateTime.hour,
dateTime.minute, dateTime.minute,
dateTime.second, dateTime.second,
); ).toLocal();
if (selectedDate.isBefore(date)) { if (selectedDate.isBefore(date)) {
selectedDate = selectedDate.add(Duration(days: 1)); selectedDate = selectedDate.add(Duration(days: 1));
} }