selectTime static method
void
selectTime({
- required BuildContext context,
- required TextEditingController controller,
- String? hintText,
- void onTimeSelected(
- TimeOfDay? time
Implementation
static void selectTime(
{required BuildContext context,
required TextEditingController controller,
String? hintText,
void Function(TimeOfDay? time)? onTimeSelected}) async {
try {
// Parse the current time from the controller
final initialTime = Utils().parseTime(controller.text) ?? TimeOfDay.now();
// Show time picker
final pickedTime = await showTimePicker(
helpText: hintText ?? StringConst.SELECT_TIME_MESSAGE,
context: context,
initialTime: initialTime,
initialEntryMode: TimePickerEntryMode.dial,
builder: (BuildContext context, Widget? child) {
return Theme(
data: Theme.of(context).copyWith(
textTheme: const TextTheme(
titleLarge: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD, color: Colors.black),
bodyLarge: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD, color: Colors.black),
bodySmall: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD, color: Colors.black),
labelLarge: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD, color: Colors.black),
bodyMedium: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD, color: Colors.black),
displayLarge: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD, color: Colors.black),
displayMedium: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD),
displaySmall: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD),
headlineLarge: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD),
headlineMedium: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD),
headlineSmall: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD),
labelMedium: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD),
labelSmall: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD),
titleMedium: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD, color: Colors.black),
titleSmall: TextStyle(fontFamily: FONT_STYLE_QUICK_BOLD, color: Colors.black),
),
colorScheme: const ColorScheme.light(
primary: Colors.deepPurple,
onPrimary: Colors.white,
onSurface: Colors.black,
),
dialogBackgroundColor: Colors.white,
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
foregroundColor: Colors.deepPurple,
),
),
),
child: Directionality(
textDirection: TextDirection.ltr,
child: MediaQuery(
data: MediaQuery.of(context).copyWith(
alwaysUse24HourFormat: false,
),
child: child!,
),
),
);
},
);
if (pickedTime != null) {
controller.text = Utils().getFormattedTime(pickedTime);
if (onTimeSelected != null) {
onTimeSelected(pickedTime);
}
}
} catch (e) {
// Fallback to current time if parsing fails
controller.text = Utils().getFormattedTime(TimeOfDay.now());
}
}