formatDuration static method

String formatDuration(
  1. Duration duration, {
  2. required String i18nDay,
  3. required String i18nHour,
  4. required String i18nMinute,
  5. required String i18nSecond,
  6. bool forceShowSeconds = false,
  7. bool forceShowMinutes = false,
  8. bool forceShowHours = false,
  9. bool forceShowDays = false,
  10. bool abbreviate = false,
})

Format the duration as a readable string. i18nDay, i18nHour, i18nMinute, i18nSecond are used to translate hours, minutes and seconds

abbreviate is used to abbreviate the duration. (e.g. hours -> h, minutes -> m, seconds -> s)

Implementation

static String formatDuration(
  Duration duration, {
  required String i18nDay,
  required String i18nHour,
  required String i18nMinute,
  required String i18nSecond,
  bool forceShowSeconds = false,
  bool forceShowMinutes = false,
  bool forceShowHours = false,
  bool forceShowDays = false,
  bool abbreviate = false,
}) {
  String str = '';
  final int days = duration.inDays;
  final int hours = duration.inHours.remainder(Duration.hoursPerDay);
  final int minutes = duration.inMinutes.remainder(Duration.minutesPerHour);
  final int seconds = duration.inSeconds.remainder(Duration.secondsPerMinute);

  if (days > 0 || forceShowDays) {
    if (abbreviate) {
      str += '${days}d ';
    } else {
      str += '$days $i18nDay ';
    }
  }

  if (hours > 0 || forceShowHours) {
    if (abbreviate) {
      str += '${hours}h ';
    } else {
      str += '$hours $i18nHour ';
    }
  }
  if (minutes > 0 || forceShowMinutes) {
    if (abbreviate) {
      str += '${minutes}m ';
    } else {
      str += '$minutes $i18nMinute ';
    }
  }
  if (seconds > 0 || forceShowSeconds) {
    if (abbreviate) {
      str += '${seconds}s';
    } else {
      str += '$seconds $i18nSecond ';
    }
  }

  return str.trimRight();
}