mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: video page
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user