// ignore_for_file: unnecessary_this import 'dart:ui'; import 'package:duration/duration.dart'; import 'package:duration/locale.dart'; extension DurationFormatter on Duration { String toTimezoneOffsetFormat() { final designator = this >= Duration.zero ? '+' : '-'; final Iterable segments = [ this.inHours.remainder(24).abs(), this.inMinutes.remainder(60).abs(), ].map((final int seg) => seg.toString().padLeft(2, '0')); return '$designator${segments.first}:${segments.last}'; } String toPrettyString(final Locale locale) => prettyDuration(this, locale: getDurationLocale(locale)); } DurationLocale getDurationLocale(final Locale locale) => DurationLocale.fromLanguageCode(locale.languageCode) ?? const EnglishDurationLocale();