mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
mod: video playing logic
This commit is contained in:
@@ -90,6 +90,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
PlPlayerController.setPlayCallBack(playCallBack);
|
||||||
if (Get.arguments != null && Get.arguments['heroTag'] != null) {
|
if (Get.arguments != null && Get.arguments['heroTag'] != null) {
|
||||||
heroTag = Get.arguments['heroTag'];
|
heroTag = Get.arguments['heroTag'];
|
||||||
}
|
}
|
||||||
@@ -179,6 +180,10 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void playCallBack() {
|
||||||
|
plPlayerController?.play();
|
||||||
|
}
|
||||||
|
|
||||||
// 流
|
// 流
|
||||||
appbarStreamListen() {
|
appbarStreamListen() {
|
||||||
appbarStream = StreamController<double>();
|
appbarStream = StreamController<double>();
|
||||||
@@ -236,9 +241,9 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
SmartDialog.showToast('not initialized');
|
SmartDialog.showToast('not initialized');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
plPlayerController = videoDetailController.plPlayerController;
|
||||||
videoDetailController.isShowCover.value = false;
|
videoDetailController.isShowCover.value = false;
|
||||||
await videoDetailController.playerInit();
|
await videoDetailController.playerInit();
|
||||||
plPlayerController = videoDetailController.plPlayerController;
|
|
||||||
plPlayerController!.addStatusLister(playerListener);
|
plPlayerController!.addStatusLister(playerListener);
|
||||||
listenFullScreenStatus();
|
listenFullScreenStatus();
|
||||||
await plPlayerController!.autoEnterFullscreen();
|
await plPlayerController!.autoEnterFullscreen();
|
||||||
@@ -292,6 +297,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
void dispose() {
|
void dispose() {
|
||||||
if (!Get.previousRoute.startsWith('/video')) {
|
if (!Get.previousRoute.startsWith('/video')) {
|
||||||
ScreenBrightness().resetScreenBrightness();
|
ScreenBrightness().resetScreenBrightness();
|
||||||
|
PlPlayerController.setPlayCallBack(null);
|
||||||
}
|
}
|
||||||
appbarStream.close();
|
appbarStream.close();
|
||||||
floating.dispose();
|
floating.dispose();
|
||||||
@@ -307,6 +313,8 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
plPlayerController!.removeStatusLister(playerListener);
|
plPlayerController!.removeStatusLister(playerListener);
|
||||||
fullScreenStatusListener.cancel();
|
fullScreenStatusListener.cancel();
|
||||||
plPlayerController!.dispose();
|
plPlayerController!.dispose();
|
||||||
|
} else {
|
||||||
|
PlPlayerController.updatePlayCount();
|
||||||
}
|
}
|
||||||
videoPlayerServiceHandler.onVideoDetailDispose();
|
videoPlayerServiceHandler.onVideoDetailDispose();
|
||||||
VideoDetailPage.routeObserver.unsubscribe(this);
|
VideoDetailPage.routeObserver.unsubscribe(this);
|
||||||
@@ -343,6 +351,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
// 返回当前页面时
|
// 返回当前页面时
|
||||||
void didPopNext() async {
|
void didPopNext() async {
|
||||||
isShowing = true;
|
isShowing = true;
|
||||||
|
PlPlayerController.setPlayCallBack(playCallBack);
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
if (videoDetailController.brightness != null) {
|
if (videoDetailController.brightness != null) {
|
||||||
plPlayerController
|
plPlayerController
|
||||||
|
|||||||
@@ -290,9 +290,18 @@ class PlPlayerController {
|
|||||||
return _instance != null;
|
return _instance != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setPlayCallBack(Function? playCallBack) {
|
||||||
|
_playCallBack = playCallBack;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Function? _playCallBack;
|
||||||
|
|
||||||
static Future<void> playIfExists(
|
static Future<void> playIfExists(
|
||||||
{bool repeat = false, bool hideControls = true}) async {
|
{bool repeat = false, bool hideControls = true}) async {
|
||||||
await _instance?.play(repeat: repeat, hideControls: hideControls);
|
// await _instance?.play(repeat: repeat, hideControls: hideControls);
|
||||||
|
if (_playCallBack != null) {
|
||||||
|
_playCallBack!();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// try to get PlayerStatus
|
// try to get PlayerStatus
|
||||||
@@ -1370,4 +1379,8 @@ class PlPlayerController {
|
|||||||
));
|
));
|
||||||
_vttSubtitlesIndex.value = index;
|
_vttSubtitlesIndex.value = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void updatePlayCount() {
|
||||||
|
_instance?._playerCount.value -= 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user