parseDuration function
Parse a duration string into a Duration.
Supported formats: 500ms, 5s, 2m, 1h, 7d.
Throws FormatException if the input is not a valid duration string.
parseDuration('5s'); // Duration(seconds: 5)
parseDuration('500ms'); // Duration(milliseconds: 500)
parseDuration('abc'); // throws FormatException
Implementation
Duration parseDuration(String input) {
final match = RegExp(r'^(\d+)(ms|s|m|h|d)$').firstMatch(input.trim());
if (match == null) throw FormatException('Invalid duration: "$input"');
final value = int.parse(match.group(1)!);
return switch (match.group(2)) {
'ms' => Duration(milliseconds: value),
's' => Duration(seconds: value),
'm' => Duration(minutes: value),
'h' => Duration(hours: value),
'd' => Duration(days: value),
_ => throw FormatException('Invalid duration unit: ${match.group(2)}'),
};
}