timePicker static method
Future<TimeOfDay?>
timePicker({
- required BuildContext context,
- String? title,
- TimeOfDay? initialTime,
- String? cancelText,
- String? confirmText,
- required TextEditingController controller,
Implementation
static Future<TimeOfDay?> timePicker({
required BuildContext context,
String? title,
TimeOfDay? initialTime,
String? cancelText,
String? confirmText,
required TextEditingController controller,
}) async {
TimeOfDay? selectedValue;
TimeOfDay? selectedTime = await showTimePicker(
initialEntryMode: TimePickerEntryMode.dialOnly,
context: context,
initialTime: initialTime ?? TimeOfDay.now(),
cancelText: cancelText ?? "Cancel",
confirmText: confirmText ?? "Save",
helpText: title ?? "Select time",
builder: (context, Widget? child) {
return Theme(
data: Theme.of(context).copyWith(
timePickerTheme: TimePickerThemeData(
dialHandColor: Colors.blue,
hourMinuteTextColor: Colors.blue,
dayPeriodTextColor: MaterialStateColor.resolveWith((states) =>
states.contains(MaterialState.selected)
? Colors.white
: Colors.black),
dayPeriodTextStyle: const TextStyle(fontSize: 12),
helpTextStyle: TextStyle(color: Colors.black),
entryModeIconColor: Colors.blue,
),
textButtonTheme: TextButtonThemeData(
style: ButtonStyle(
foregroundColor: MaterialStateProperty.all<Color>(Colors.blue),
),
),
),
child: MediaQuery(
data: MediaQuery.of(context).copyWith(alwaysUse24HourFormat: true),
child: child!,
),
);
},
);
if (selectedTime != null) {
selectedValue = selectedTime;
final dateTime =
DateTime(2022, 1, 1, selectedValue.hour, selectedValue.minute);
final formattedTime = DateFormat('HH:mm').format(dateTime);
controller.text = formattedTime;
print(controller.text);
}
return selectedValue;
}