parseDuration function

Duration? parseDuration(
  1. String? value
)

Parses a string into a Duration.

  • Accepts formats like "5s", "10min", "2hrs", "1day".
  • Returns null if value is null or 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;
}