diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index 008fd46eb..d4d655ad5 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -1359,7 +1359,8 @@ class VideoDetailController extends GetxController duration += split[i] * pow(60, i).toInt(); } if (duration <= - plPlayerController.durationSeconds.value) { + plPlayerController + .durationSeconds.value.inSeconds) { setState(() { updateSegment( isFirst: isFirst, @@ -1687,7 +1688,9 @@ class VideoDetailController extends GetxController 'userID': GStorage.blockUserID, 'userAgent': Constants.userAgent, 'videoDuration': plPlayerController - .durationSeconds.value, + .durationSeconds + .value + .inSeconds, }, data: { 'segments': list! diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 298a03280..08c24afb0 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -58,7 +58,7 @@ class PlPlayerController { // 展示使用 final Rx _sliderTempPosition = Rx(Duration.zero); final Rx _duration = Rx(Duration.zero); - final RxInt durationSeconds = 0.obs; + final Rx durationSeconds = Duration.zero.obs; final Rx _buffered = Rx(Duration.zero); final RxInt bufferedSeconds = 0.obs; @@ -330,9 +330,8 @@ class PlPlayerController { } void updateDurationSecond() { - int newSecond = _duration.value.inSeconds; - if (durationSeconds.value != newSecond) { - durationSeconds.value = newSecond; + if (durationSeconds.value != _duration.value) { + durationSeconds.value = _duration.value; } } @@ -1437,7 +1436,7 @@ class PlPlayerController { } bool isComplete = playerStatus.status.value == PlayerStatus.completed || type == 'completed'; - if ((duration.value - position.value).inMilliseconds > 1000) { + if ((durationSeconds.value - position.value).inMilliseconds > 1000) { isComplete = false; } // 播放状态变化时,更新 diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index 013fca1fb..807608074 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -321,7 +321,8 @@ class _PLVideoPlayerState extends State }), Obx( () => Text( - Utils.timeFormat(plPlayerController.durationSeconds.value), + Utils.timeFormat( + plPlayerController.durationSeconds.value.inSeconds), style: const TextStyle( color: Color(0xFFD0D0D0), fontSize: 10, @@ -329,7 +330,7 @@ class _PLVideoPlayerState extends State fontFeatures: [FontFeature.tabularFigures()], ), semanticsLabel: - '共${Utils.durationReadFormat(Utils.timeFormat(plPlayerController.durationSeconds.value))}', + '共${Utils.durationReadFormat(Utils.timeFormat(plPlayerController.durationSeconds.value.inSeconds))}', ), ), ], @@ -702,7 +703,8 @@ class _PLVideoPlayerState extends State if (plPlayerController.showSeekPreview) { try { plPlayerController.previewDx.value = result.inMilliseconds / - plPlayerController.duration.value.inMilliseconds * + plPlayerController + .durationSeconds.value.inMilliseconds * context.size!.width; if (plPlayerController.showPreview.value.not) { plPlayerController.showPreview.value = true; @@ -856,11 +858,13 @@ class _PLVideoPlayerState extends State const SizedBox(width: 2), Obx( () => Text( - plPlayerController.duration.value.inMinutes >= 60 + plPlayerController + .durationSeconds.value.inMinutes >= + 60 ? printDurationWithHours( - plPlayerController.duration.value) + plPlayerController.durationSeconds.value) : printDuration( - plPlayerController.duration.value), + plPlayerController.durationSeconds.value), style: textStyle, ), ), @@ -1071,7 +1075,7 @@ class _PLVideoPlayerState extends State Obx( () { final int value = plPlayerController.sliderPositionSeconds.value; - final int max = plPlayerController.durationSeconds.value; + final int max = plPlayerController.durationSeconds.value.inSeconds; final int buffer = plPlayerController.bufferedSeconds.value; if (plPlayerController.showControls.value) { return const SizedBox.shrink(); diff --git a/lib/plugin/pl_player/widgets/bottom_control.dart b/lib/plugin/pl_player/widgets/bottom_control.dart index 98ddef7cd..8d64c7026 100644 --- a/lib/plugin/pl_player/widgets/bottom_control.dart +++ b/lib/plugin/pl_player/widgets/bottom_control.dart @@ -38,7 +38,7 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget { Obx( () { final int value = controller!.sliderPositionSeconds.value; - final int max = controller!.durationSeconds.value; + final int max = controller!.durationSeconds.value.inSeconds; final int buffer = controller!.bufferedSeconds.value; if (value > max || max <= 0) { return nil;