feat: 快进、快退、拖动时时间戳展示、关闭自动播放时处理、单p播放完成处理
This commit is contained in:
29
lib/plugin/pl_player/models/duration.dart
Normal file
29
lib/plugin/pl_player/models/duration.dart
Normal file
@ -0,0 +1,29 @@
|
||||
extension DurationExtension on Duration {
|
||||
/// Returns clamp of [Duration] between [min] and [max].
|
||||
Duration clamp(Duration min, Duration max) {
|
||||
if (this < min) return min;
|
||||
if (this > max) return max;
|
||||
return this;
|
||||
}
|
||||
|
||||
/// Returns a [String] representation of [Duration].
|
||||
String label({Duration? reference}) {
|
||||
reference ??= this;
|
||||
if (reference > const Duration(days: 1)) {
|
||||
final days = inDays.toString().padLeft(3, '0');
|
||||
final hours = (inHours - (inDays * 24)).toString().padLeft(2, '0');
|
||||
final minutes = (inMinutes - (inHours * 60)).toString().padLeft(2, '0');
|
||||
final seconds = (inSeconds - (inMinutes * 60)).toString().padLeft(2, '0');
|
||||
return '$days:$hours:$minutes:$seconds';
|
||||
} else if (reference > const Duration(hours: 1)) {
|
||||
final hours = inHours.toString().padLeft(2, '0');
|
||||
final minutes = (inMinutes - (inHours * 60)).toString().padLeft(2, '0');
|
||||
final seconds = (inSeconds - (inMinutes * 60)).toString().padLeft(2, '0');
|
||||
return '$hours:$minutes:$seconds';
|
||||
} else {
|
||||
final minutes = inMinutes.toString().padLeft(2, '0');
|
||||
final seconds = (inSeconds - (inMinutes * 60)).toString().padLeft(2, '0');
|
||||
return '$minutes:$seconds';
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user