opt: video page

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-12-03 09:48:41 +08:00
parent 3d7583e010
commit 49fe27176d
5 changed files with 37 additions and 17 deletions

View File

@@ -849,6 +849,7 @@ class VideoDetailController extends GetxController
viewPointList: viewPointList, viewPointList: viewPointList,
vttSubtitles: _vttSubtitles, vttSubtitles: _vttSubtitles,
vttSubtitlesIndex: vttSubtitlesIndex, vttSubtitlesIndex: vttSubtitlesIndex,
showVP: showVP,
// 硬解 // 硬解
enableHA: enableHA.value, enableHA: enableHA.value,
hwdec: hwdec.value, hwdec: hwdec.value,
@@ -1580,6 +1581,7 @@ class VideoDetailController extends GetxController
List<Map<String, String>> _vttSubtitles = <Map<String, String>>[]; List<Map<String, String>> _vttSubtitles = <Map<String, String>>[];
int vttSubtitlesIndex = 0; int vttSubtitlesIndex = 0;
bool showVP = true;
void _getSubtitle() { void _getSubtitle() {
_vttSubtitles.clear(); _vttSubtitles.clear();
@@ -1646,6 +1648,7 @@ class VideoDetailController extends GetxController
}).toList(); }).toList();
if (plPlayerController.viewPointList.isEmpty) { if (plPlayerController.viewPointList.isEmpty) {
plPlayerController.viewPointList.value = viewPointList; plPlayerController.viewPointList.value = viewPointList;
plPlayerController.showVP.value = showVP = true;
} }
} }
} }

View File

@@ -183,10 +183,17 @@ class _VideoDetailPageState extends State<VideoDetailPage>
if (videoDetailController.autoPlay.value) { if (videoDetailController.autoPlay.value) {
plPlayerController = videoDetailController.plPlayerController; plPlayerController = videoDetailController.plPlayerController;
plPlayerController!.addStatusLister(playerListener); plPlayerController!.addStatusLister(playerListener);
plPlayerController!.addPositionListener(positionListener);
await plPlayerController!.autoEnterFullscreen(); await plPlayerController!.autoEnterFullscreen();
} }
} }
void positionListener(Duration position) {
if (position.inSeconds != videoDetailController.defaultST.inSeconds) {
videoDetailController.defaultST = position;
}
}
@override @override
void didChangeAppLifecycleState(AppLifecycleState state) { void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) { if (state == AppLifecycleState.resumed) {
@@ -264,6 +271,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
videoDetailController.isShowCover.value = false; videoDetailController.isShowCover.value = false;
await videoDetailController.playerInit(autoplay: true); await videoDetailController.playerInit(autoplay: true);
plPlayerController!.addStatusLister(playerListener); plPlayerController!.addStatusLister(playerListener);
plPlayerController!.addPositionListener(positionListener);
await plPlayerController!.autoEnterFullscreen(); await plPlayerController!.autoEnterFullscreen();
videoDetailController.autoPlay.value = true; videoDetailController.autoPlay.value = true;
} }
@@ -291,7 +299,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
void _makeHeartBeat() { void _makeHeartBeat() {
plPlayerController!.makeHeartBeat( plPlayerController!.makeHeartBeat(
plPlayerController!.positionSeconds.value, videoDetailController.defaultST.inSeconds,
type: 'status', type: 'status',
isManual: true, isManual: true,
bvid: videoDetailController.bvid, bvid: videoDetailController.bvid,
@@ -321,6 +329,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
if (plPlayerController != null) { if (plPlayerController != null) {
_makeHeartBeat(); _makeHeartBeat();
plPlayerController!.removeStatusLister(playerListener); plPlayerController!.removeStatusLister(playerListener);
plPlayerController!.removePositionListener(positionListener);
plPlayerController!.dispose(); plPlayerController!.dispose();
} else { } else {
PlPlayerController.updatePlayCount(); PlPlayerController.updatePlayCount();
@@ -347,16 +356,17 @@ class _VideoDetailPageState extends State<VideoDetailPage>
plPlayerController?.playerStatus.status.value; plPlayerController?.playerStatus.status.value;
/// 开启 /// 开启
if (setting.get(SettingBoxKey.enableAutoBrightness, defaultValue: true) // if (setting.get(SettingBoxKey.enableAutoBrightness, defaultValue: true)
as bool) { // as bool) {
videoDetailController.brightness = plPlayerController?.brightness.value; videoDetailController.brightness = plPlayerController?.brightness.value;
} // }
if (plPlayerController != null) { if (plPlayerController != null) {
_makeHeartBeat(); _makeHeartBeat();
videoDetailController.vttSubtitlesIndex = videoDetailController.vttSubtitlesIndex =
plPlayerController!.vttSubtitlesIndex.value; plPlayerController!.vttSubtitlesIndex.value;
videoDetailController.defaultST = plPlayerController!.position.value; videoDetailController.showVP = plPlayerController!.showVP.value;
plPlayerController!.removeStatusLister(playerListener); plPlayerController!.removeStatusLister(playerListener);
plPlayerController!.removePositionListener(positionListener);
plPlayerController!.pause(); plPlayerController!.pause();
} }
isShowing = false; isShowing = false;
@@ -421,6 +431,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
AutoOrientation.fullAutoMode(); AutoOrientation.fullAutoMode();
}); });
plPlayerController?.addStatusLister(playerListener); plPlayerController?.addStatusLister(playerListener);
plPlayerController?.addPositionListener(positionListener);
} }
@override @override

View File

@@ -248,11 +248,11 @@ class _WhisperPageState extends State<WhisperPage> {
leading: Badge( leading: Badge(
isLabelVisible: isLabelVisible:
sessionList[i].unreadCount > 0, sessionList[i].unreadCount > 0,
backgroundColor: // backgroundColor:
Theme.of(context).colorScheme.primary, // Theme.of(context).colorScheme.primary,
textColor: Theme.of(context) // textColor: Theme.of(context)
.colorScheme // .colorScheme
.onInverseSurface, // .onInverseSurface,
label: Text( label: Text(
" ${sessionList[i].unreadCount.toString()} "), " ${sessionList[i].unreadCount.toString()} "),
alignment: Alignment.topRight, alignment: Alignment.topRight,

View File

@@ -407,6 +407,7 @@ class PlPlayerController {
List<Segment>? viewPointList, List<Segment>? viewPointList,
List<Map<String, String>>? vttSubtitles, List<Map<String, String>>? vttSubtitles,
int? vttSubtitlesIndex, int? vttSubtitlesIndex,
bool? showVP,
bool autoplay = true, bool autoplay = true,
// 默认不循环 // 默认不循环
PlaylistMode looping = PlaylistMode.none, PlaylistMode looping = PlaylistMode.none,
@@ -434,6 +435,7 @@ class PlPlayerController {
this.viewPointList.value = viewPointList ?? <Segment>[]; this.viewPointList.value = viewPointList ?? <Segment>[];
this.vttSubtitles.value = vttSubtitles ?? <Map<String, String>>[]; this.vttSubtitles.value = vttSubtitles ?? <Map<String, String>>[];
this.vttSubtitlesIndex.value = vttSubtitlesIndex ?? 0; this.vttSubtitlesIndex.value = vttSubtitlesIndex ?? 0;
this.showVP.value = showVP ?? true;
_autoPlay = autoplay; _autoPlay = autoplay;
_looping = looping; _looping = looping;
// 初始化视频倍速 // 初始化视频倍速
@@ -459,7 +461,10 @@ class PlPlayerController {
dataSource, _looping, enableHA, hwdec, width, height); dataSource, _looping, enableHA, hwdec, width, height);
// 获取视频时长 00:00 // 获取视频时长 00:00
_duration.value = duration ?? _videoPlayerController!.state.duration; _duration.value = duration ?? _videoPlayerController!.state.duration;
_position.value = _sliderPosition.value = seekTo;
updateDurationSecond(); updateDurationSecond();
updatePositionSecond();
updateSliderPositionSecond();
// 数据加载完成 // 数据加载完成
dataStatus.status.value = DataStatus.loaded; dataStatus.status.value = DataStatus.loaded;

View File

@@ -2,7 +2,7 @@ import 'dart:convert';
import 'dart:math'; import 'dart:math';
import 'package:crypto/crypto.dart'; 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:get/get.dart';
import 'package:PiliPalaX/pages/dynamics/index.dart'; import 'package:PiliPalaX/pages/dynamics/index.dart';
import 'package:PiliPalaX/pages/home/index.dart'; import 'package:PiliPalaX/pages/home/index.dart';
@@ -29,7 +29,8 @@ class LoginUtils {
MediaController mediaCtr = Get.find<MediaController>(); MediaController mediaCtr = Get.find<MediaController>();
mediaCtr.userLogin.value = status; mediaCtr.userLogin.value = status;
} catch (err) { } 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 Random random = Random(); // Random.secure();
final String randomHex32 = final String randomHex32 =
List.generate(32, (index) => random.nextInt(16).toRadixString(16)) List.generate(32, (index) => random.nextInt(16).toRadixString(16))
.join(); .join();
final String randomHex16 = final String randomHex16 =
List.generate(16, (index) => random.nextInt(16).toRadixString(16)) List.generate(16, (index) => random.nextInt(16).toRadixString(16))
.join(); .join();
final String deviceID = randomHex32 + yyyyMMddHHmmss + randomHex16; final String deviceID = randomHex32 + yyyyMMddHHmmss + randomHex16;