handleTimeInput method
Handles manual time input from a text field.
Formats the input as a time string (HH:MM) and updates the time if valid. @param input The raw input string from the text field @param controller The text editing controller to update with formatted text
Implementation
void handleTimeInput(String input, TextEditingController controller) {
final digits = input.replaceAll(RegExp(r'[^0-9]'), '');
if (digits.length >= 2) {
final hours = digits.substring(0, 2);
final minutes =
digits.length > 2 ? digits.substring(2, min(4, digits.length)) : '';
final formatted = '$hours:$minutes';
controller.value = TextEditingValue(
text: formatted,
selection: TextSelection.collapsed(offset: formatted.length),
);
if (digits.length >= 4) {
final h = int.tryParse(digits.substring(0, 2));
final m = int.tryParse(digits.substring(2, 4));
if (h != null && m != null) updateTime(h, m);
}
} else {
controller.value = TextEditingValue(
text: digits,
selection: TextSelection.collapsed(offset: digits.length),
);
}
}