parseDuration function
Parses a string into a Duration.
- Accepts formats like
"5s","10min","2hrs","1day". - Returns
nullifvalueisnullor empty. - Throws Exception if the string is not valid.
Implementation
Duration? parseDuration(String? value) {
if (value != null && value.isNotEmpty) {
final match = _parseDurationRegExp.firstMatch(value);
if (match != null) {
final digits = int.parse(match.group(1)!);
final unit = match.group(2);
switch (unit) {
case "ms": return Duration(milliseconds: digits);
case "s": return Duration(seconds: digits);
case "m": return Duration(minutes: digits);
case "min": return Duration(minutes: digits);
case "mins": return Duration(minutes: digits);
case "h": return Duration(hours: digits);
case "hr": return Duration(hours: digits);
case "hrs": return Duration(hours: digits);
case "d": return Duration(days: digits);
case "day": return Duration(days: digits);
case "days": return Duration(days: digits);
}
}
throw Exception("Problem parsing Duration value: $value");
}
return null;
}