selectStartAndEndTime function
Implementation
Future<bool?> selectStartAndEndTime(BuildContext context) async {
TimeOfDay? startTime;
TimeOfDay? endTime;
String? timeStart = "";
String? timeEnd = "";
bool? timeIsGreater;
// Selección de la hora de inicio
await showTimePicker(
context: context,
initialTime: startTime ?? TimeOfDay.now(),
cancelText: "Cancel",
confirmText: "Ok",
helpText: 'Select Start Time',
builder: (_, child) {
return Theme(
data: appStore.isDarkMode ? ThemeData.dark() : ThemeData.light(),
child: child!,
);
},
).then((time) async {
if (time != null) {
startTime = time;
timeStart = startTime!.format(context).toString();
}
if (startTime != null) {
// Selección de la hora de fin
await showTimePicker(
context: context,
initialTime: endTime ?? TimeOfDay.now(),
cancelText: "Cancel",
confirmText: "Ok",
helpText: 'Select End Time',
builder: (_, child) {
return Theme(
data: appStore.isDarkMode ? ThemeData.dark() : ThemeData.light(),
child: child!,
);
},
).then((time) {
if (time != null) {
endTime = time;
timeEnd = endTime!.format(context).toString();
DateTime currentTime = DateTime.now();
// Convertimos la hora de inicio a milisegundos
int startEventTime = DateTime(
currentTime.year,
currentTime.month,
currentTime.day,
startTime!.hour,
startTime!.minute,
currentTime.second,
currentTime.millisecond,
currentTime.microsecond)
.millisecondsSinceEpoch;
// Convertimos la hora de fin a milisegundos
int endEventTime = DateTime(
currentTime.year,
currentTime.month,
currentTime.day,
endTime!.hour,
endTime!.minute,
currentTime.second,
currentTime.millisecond,
currentTime.microsecond)
.millisecondsSinceEpoch;
// Si la hora de fin es menor o igual a la de inicio, sumamos un día al tiempo de fin
if (endEventTime <= startEventTime) {
endEventTime = DateTime(
currentTime.year,
currentTime.month,
currentTime.day + 1, // Sumamos un día
endTime!.hour,
endTime!.minute,
currentTime.second,
currentTime.millisecond,
currentTime.microsecond)
.millisecondsSinceEpoch;
}
// Verificamos si el tiempo de fin es mayor al de inicio
if (endEventTime > startEventTime) {
addEventStore.setEventStartTime(timeStart.validate());
addEventStore.setEventEndTime(timeEnd.validate());
timeIsGreater = true;
} else {
timeIsGreater = false;
}
}
}).catchError((e) {
toast(e.toString());
});
}
}).catchError((e) {
toast(e.toString());
});
return timeIsGreater;
}