formatDuration static method

String formatDuration(
  1. Duration duration, {
  2. bool verbose = false,
})

Format duration (e.g., "2h 30m", "45s")

Implementation

static String formatDuration(Duration duration, {bool verbose = false}) {
  if (verbose) {
    final parts = <String>[];

    if (duration.inDays > 0) {
      parts.add(
        '${duration.inDays} ${DateTimeConstants.pluralize(duration.inDays, 'day', 'days')}',
      );
    }
    if (duration.inHours % 24 > 0) {
      parts.add(
        '${duration.inHours % 24} ${DateTimeConstants.pluralize(duration.inHours % 24, 'hour', 'hours')}',
      );
    }
    if (duration.inMinutes % 60 > 0) {
      parts.add(
        '${duration.inMinutes % 60} ${DateTimeConstants.pluralize(duration.inMinutes % 60, 'minute', 'minutes')}',
      );
    }
    if (duration.inSeconds % 60 > 0 && parts.isEmpty) {
      parts.add(
        '${duration.inSeconds % 60} ${DateTimeConstants.pluralize(duration.inSeconds % 60, 'second', 'seconds')}',
      );
    }

    return parts.join(', ');
  }

  if (duration.inDays > 0) {
    return '${duration.inDays}d ${duration.inHours % 24}h';
  } else if (duration.inHours > 0) {
    return '${duration.inHours}h ${duration.inMinutes % 60}m';
  } else if (duration.inMinutes > 0) {
    return '${duration.inMinutes}m ${duration.inSeconds % 60}s';
  } else {
    return '${duration.inSeconds}s';
  }
}