formatTime method

String formatTime(
  1. String value
)

Implementation

String formatTime(String value) {
  // Remove non-digit characters
  String cleanedValue = value.replaceAll(RegExp('[^0-9]'), '');

  //remove leading zeros
  cleanedValue = cleanedValue.replaceFirst(RegExp('^0+'), '');

  final hasHours = cleanedValue.length > 4;

  const maxLengthWithHours = 6;
  const maxLengthWithMinutes = 4;

  // Pad with leading zeros if needed
  if (!hasHours) {
    while (cleanedValue.length < maxLengthWithMinutes) {
      cleanedValue = '0$cleanedValue';
    }
  } else {
    while (cleanedValue.length < maxLengthWithHours) {
      cleanedValue = '0$cleanedValue';
    }
  }

  // Ensure the length is not more than maxLength characters
  if (hasHours) {
    if (cleanedValue.length > maxLengthWithHours) {
      cleanedValue = cleanedValue.replaceFirst(RegExp('^0+'), '');
      cleanedValue = cleanedValue.padLeft(maxLengthWithHours, '0');
    }
  } else {
    if (cleanedValue.length > maxLengthWithMinutes) {
      cleanedValue = cleanedValue.replaceFirst(RegExp('^0+'), '');
      cleanedValue = cleanedValue.padLeft(maxLengthWithMinutes, '0');
    }
  }

  // Insert colons between hours, minutes, and seconds
  return '${cleanedValue.substring(0, 2)}:${cleanedValue.substring(2, 4)}${hasHours ? ':${cleanedValue.substring(4, 6)}' : ''}';
}