parseDuration static method
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]
);
}