formatTime method
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)}' : ''}';
}