parseDuration static method

Duration parseDuration(
  1. String text
)

Implementation

static Duration parseDuration(String text) {
  final tokens = text.split(" ");
  var amounts = [0,0,0,0,0];
  var suffixes = ["d", "h", "m", "s", "ms"];
  for(final token in tokens) {
    final suffix = suffixes.firstWhereOrNull((suffix) => token.endsWith(suffix));
    if(suffix == null) {
      throw FormatException("Token $token does not have a recognized suffix");
    }
    final idxSuffix = suffixes.indexOf(suffix);
    final amountStr = token.substring(0, token.length-suffix.length);
    final amount = int.tryParse(amountStr);
    if(amount == null) {
      throw FormatException("Invalid amount $amountStr for token $token");
    }
    amounts[idxSuffix] = amount;
  }

  return Duration(
    days: amounts[0],
    hours: amounts[1],
    minutes: amounts[2],
    seconds: amounts[3],
    milliseconds: amounts[4]
  );
}