Fladder/lib/util/humanize_duration.dart
2024-09-20 10:01:13 +02:00

28 lines
1.2 KiB
Dart

import 'package:collection/collection.dart';
extension DurationExtensions on Duration? {
String? get humanize {
if (this == null) return null;
final duration = this!;
final hours = duration.inHours != 0 ? '${duration.inHours.toString()}h' : null;
final minutes = duration.inMinutes % 60 != 0 ? '${duration.inMinutes % 60}m'.padLeft(3, '0') : null;
final seconds = duration.inHours == 0 ? '${duration.inSeconds % 60}s'.padLeft(3, '0') : null;
final result = [hours, minutes, seconds].whereNotNull().map((e) => e).join(' ');
return result.isNotEmpty ? result : null;
}
String? get humanizeSmall {
if (this == null) return null;
final duration = this!;
final hours = (duration.inHours != 0 ? duration.inHours : null)?.toString();
final minutes = (duration.inMinutes % 60).toString().padLeft(2, '0');
final seconds = (duration.inHours == 0 ? duration.inSeconds % 60 : null)?.toString().padLeft(2, '0');
final result = [hours, minutes, seconds].whereNotNull().map((e) => e).join(':');
return result.isNotEmpty ? result : null;
}
String get simpleTime {
return toString().split('.').first.padLeft(8, "0");
}
}