handleTimeInput method

void handleTimeInput(
  1. String input,
  2. TextEditingController controller
)

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),
    );
  }
}