diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index b5c83a23..2333d22e 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -849,6 +849,7 @@ class VideoDetailController extends GetxController viewPointList: viewPointList, vttSubtitles: _vttSubtitles, vttSubtitlesIndex: vttSubtitlesIndex, + showVP: showVP, // 硬解 enableHA: enableHA.value, hwdec: hwdec.value, @@ -1580,6 +1581,7 @@ class VideoDetailController extends GetxController List> _vttSubtitles = >[]; int vttSubtitlesIndex = 0; + bool showVP = true; void _getSubtitle() { _vttSubtitles.clear(); @@ -1646,6 +1648,7 @@ class VideoDetailController extends GetxController }).toList(); if (plPlayerController.viewPointList.isEmpty) { plPlayerController.viewPointList.value = viewPointList; + plPlayerController.showVP.value = showVP = true; } } } diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index 5ac5f10d..247a4153 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -183,10 +183,17 @@ class _VideoDetailPageState extends State if (videoDetailController.autoPlay.value) { plPlayerController = videoDetailController.plPlayerController; plPlayerController!.addStatusLister(playerListener); + plPlayerController!.addPositionListener(positionListener); await plPlayerController!.autoEnterFullscreen(); } } + void positionListener(Duration position) { + if (position.inSeconds != videoDetailController.defaultST.inSeconds) { + videoDetailController.defaultST = position; + } + } + @override void didChangeAppLifecycleState(AppLifecycleState state) { if (state == AppLifecycleState.resumed) { @@ -264,6 +271,7 @@ class _VideoDetailPageState extends State videoDetailController.isShowCover.value = false; await videoDetailController.playerInit(autoplay: true); plPlayerController!.addStatusLister(playerListener); + plPlayerController!.addPositionListener(positionListener); await plPlayerController!.autoEnterFullscreen(); videoDetailController.autoPlay.value = true; } @@ -291,7 +299,7 @@ class _VideoDetailPageState extends State void _makeHeartBeat() { plPlayerController!.makeHeartBeat( - plPlayerController!.positionSeconds.value, + videoDetailController.defaultST.inSeconds, type: 'status', isManual: true, bvid: videoDetailController.bvid, @@ -321,6 +329,7 @@ class _VideoDetailPageState extends State if (plPlayerController != null) { _makeHeartBeat(); plPlayerController!.removeStatusLister(playerListener); + plPlayerController!.removePositionListener(positionListener); plPlayerController!.dispose(); } else { PlPlayerController.updatePlayCount(); @@ -347,16 +356,17 @@ class _VideoDetailPageState extends State plPlayerController?.playerStatus.status.value; /// 开启 - if (setting.get(SettingBoxKey.enableAutoBrightness, defaultValue: true) - as bool) { - videoDetailController.brightness = plPlayerController?.brightness.value; - } + // if (setting.get(SettingBoxKey.enableAutoBrightness, defaultValue: true) + // as bool) { + videoDetailController.brightness = plPlayerController?.brightness.value; + // } if (plPlayerController != null) { _makeHeartBeat(); videoDetailController.vttSubtitlesIndex = plPlayerController!.vttSubtitlesIndex.value; - videoDetailController.defaultST = plPlayerController!.position.value; + videoDetailController.showVP = plPlayerController!.showVP.value; plPlayerController!.removeStatusLister(playerListener); + plPlayerController!.removePositionListener(positionListener); plPlayerController!.pause(); } isShowing = false; @@ -421,6 +431,7 @@ class _VideoDetailPageState extends State AutoOrientation.fullAutoMode(); }); plPlayerController?.addStatusLister(playerListener); + plPlayerController?.addPositionListener(positionListener); } @override diff --git a/lib/pages/whisper/view.dart b/lib/pages/whisper/view.dart index fae6a24f..9fa93090 100644 --- a/lib/pages/whisper/view.dart +++ b/lib/pages/whisper/view.dart @@ -248,11 +248,11 @@ class _WhisperPageState extends State { leading: Badge( isLabelVisible: sessionList[i].unreadCount > 0, - backgroundColor: - Theme.of(context).colorScheme.primary, - textColor: Theme.of(context) - .colorScheme - .onInverseSurface, + // backgroundColor: + // Theme.of(context).colorScheme.primary, + // textColor: Theme.of(context) + // .colorScheme + // .onInverseSurface, label: Text( " ${sessionList[i].unreadCount.toString()} "), alignment: Alignment.topRight, diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index c8c11af3..a33dc409 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -407,6 +407,7 @@ class PlPlayerController { List? viewPointList, List>? vttSubtitles, int? vttSubtitlesIndex, + bool? showVP, bool autoplay = true, // 默认不循环 PlaylistMode looping = PlaylistMode.none, @@ -434,6 +435,7 @@ class PlPlayerController { this.viewPointList.value = viewPointList ?? []; this.vttSubtitles.value = vttSubtitles ?? >[]; this.vttSubtitlesIndex.value = vttSubtitlesIndex ?? 0; + this.showVP.value = showVP ?? true; _autoPlay = autoplay; _looping = looping; // 初始化视频倍速 @@ -459,7 +461,10 @@ class PlPlayerController { dataSource, _looping, enableHA, hwdec, width, height); // 获取视频时长 00:00 _duration.value = duration ?? _videoPlayerController!.state.duration; + _position.value = _sliderPosition.value = seekTo; updateDurationSecond(); + updatePositionSecond(); + updateSliderPositionSecond(); // 数据加载完成 dataStatus.status.value = DataStatus.loaded; diff --git a/lib/utils/login.dart b/lib/utils/login.dart index 3a6a2ae8..2381ec14 100644 --- a/lib/utils/login.dart +++ b/lib/utils/login.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'dart:math'; import 'package:crypto/crypto.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/pages/dynamics/index.dart'; import 'package:PiliPalaX/pages/home/index.dart'; @@ -29,7 +29,8 @@ class LoginUtils { MediaController mediaCtr = Get.find(); mediaCtr.userLogin.value = status; } catch (err) { - SmartDialog.showToast('refreshLoginStatus error: ${err.toString()}'); + // SmartDialog.showToast('refreshLoginStatus error: ${err.toString()}'); + debugPrint('refreshLoginStatus error: $err'); } } @@ -67,11 +68,11 @@ class LoginUtils { final Random random = Random(); // Random.secure(); final String randomHex32 = - List.generate(32, (index) => random.nextInt(16).toRadixString(16)) - .join(); + List.generate(32, (index) => random.nextInt(16).toRadixString(16)) + .join(); final String randomHex16 = - List.generate(16, (index) => random.nextInt(16).toRadixString(16)) - .join(); + List.generate(16, (index) => random.nextInt(16).toRadixString(16)) + .join(); final String deviceID = randomHex32 + yyyyMMddHHmmss + randomHex16;