prettySeconds function

String prettySeconds(
  1. Duration duration, {
  2. bool terse = false,
  3. DurationLocale language = const EnglishDurationLocale(),
  4. String separator = ' ',
  5. String delimiter = ' ',
  6. bool abbreviated = false,
})

Pretty format duration in terms of seconds.

If terse is true, milliseconds and microseconds are ignored. Use language to configure which locale to print for. Use abbreviated to control if the units should be abbreviated.

Implementation

String prettySeconds(Duration duration,
    {bool terse = false,
    DurationLocale language = const EnglishDurationLocale(),
    String separator = ' ',
    String delimiter = ' ',
    bool abbreviated = false}) {
  if (duration.inSeconds > 0) {
    if (duration.inMilliseconds == 0 || terse) {
      final sb = StringBuffer();
      sb.write(duration.inSeconds);
      sb.write(separator);
      sb.write(language.second(duration.inSeconds, abbreviated));
      return sb.toString();
    } else if (duration.inMicroseconds == 0) {
      final sb = StringBuffer();
      sb.write(duration.inSeconds);
      sb.write('.');
      sb.write(_digits(duration.inMilliseconds % 1000, 3));
      sb.write(separator);
      sb.write(language.second(duration.inSeconds, abbreviated));
      return sb.toString();
    } else {
      final sb = StringBuffer();
      sb.write(duration.inSeconds);
      sb.write(separator);
      sb.write(language.second(duration.inSeconds, abbreviated));
      sb.write(delimiter);
      sb.write(duration.inMilliseconds % 1000);
      sb.write('.');
      sb.write(_digits(duration.inMicroseconds % 1000, 3));
      sb.write(separator);
      sb.write(
          language.millisecond(duration.inMilliseconds % 1000, abbreviated));
      return sb.toString();
    }
  } else {
    return prettyMilliseconds(duration,
        terse: terse,
        language: language,
        separator: separator,
        abbreviated: abbreviated);
  }
}