mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
@@ -358,15 +358,15 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
AutoOrientation.portraitUpMode();
|
AutoOrientation.portraitUpMode();
|
||||||
}
|
}
|
||||||
shutdownTimerService.handleWaitingFinished();
|
shutdownTimerService.handleWaitingFinished();
|
||||||
if (videoDetailController.plPlayerController.backToHome != true) {
|
if (!videoDetailController.plPlayerController.isCloseAll) {
|
||||||
videoPlayerServiceHandler?.onVideoDetailDispose(heroTag);
|
videoPlayerServiceHandler?.onVideoDetailDispose(heroTag);
|
||||||
}
|
|
||||||
if (plPlayerController != null) {
|
if (plPlayerController != null) {
|
||||||
videoDetailController.makeHeartBeat();
|
videoDetailController.makeHeartBeat();
|
||||||
plPlayerController!.dispose();
|
plPlayerController!.dispose();
|
||||||
} else {
|
} else {
|
||||||
PlPlayerController.updatePlayCount();
|
PlPlayerController.updatePlayCount();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
PageUtils.routeObserver.unsubscribe(this);
|
PageUtils.routeObserver.unsubscribe(this);
|
||||||
WidgetsBinding.instance.removeObserver(this);
|
WidgetsBinding.instance.removeObserver(this);
|
||||||
showStatusBar();
|
showStatusBar();
|
||||||
@@ -717,8 +717,8 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
videoDetailController
|
videoDetailController
|
||||||
.plPlayerController
|
.plPlayerController
|
||||||
.backToHome =
|
..isCloseAll = true
|
||||||
true;
|
..dispose();
|
||||||
Get.until(
|
Get.until(
|
||||||
(route) => route.isFirst,
|
(route) => route.isFirst,
|
||||||
);
|
);
|
||||||
@@ -1328,8 +1328,9 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
videoDetailController.plPlayerController.backToHome =
|
videoDetailController.plPlayerController
|
||||||
true;
|
..isCloseAll = true
|
||||||
|
..dispose();
|
||||||
Get.until((route) => route.isFirst);
|
Get.until((route) => route.isFirst);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1966,7 +1966,9 @@ class HeaderControlState extends State<HeaderControl> {
|
|||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
videoDetailCtr.plPlayerController.backToHome = true;
|
videoDetailCtr.plPlayerController
|
||||||
|
..isCloseAll = true
|
||||||
|
..dispose();
|
||||||
Get.until((route) => route.isFirst);
|
Get.until((route) => route.isFirst);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -124,7 +124,6 @@ class PlPlayerController {
|
|||||||
final RxBool _isSliderMoving = false.obs;
|
final RxBool _isSliderMoving = false.obs;
|
||||||
PlaylistMode _looping = PlaylistMode.none;
|
PlaylistMode _looping = PlaylistMode.none;
|
||||||
bool _autoPlay = false;
|
bool _autoPlay = false;
|
||||||
final bool _listenersInitialized = false;
|
|
||||||
|
|
||||||
// 记录历史记录
|
// 记录历史记录
|
||||||
int? _aid;
|
int? _aid;
|
||||||
@@ -504,8 +503,6 @@ class PlPlayerController {
|
|||||||
_playCallBack = playCallBack;
|
_playCallBack = playCallBack;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool? backToHome;
|
|
||||||
|
|
||||||
static Function? _playCallBack;
|
static Function? _playCallBack;
|
||||||
|
|
||||||
static void playIfExists({bool repeat = false, bool hideControls = true}) {
|
static void playIfExists({bool repeat = false, bool hideControls = true}) {
|
||||||
@@ -660,9 +657,7 @@ class PlPlayerController {
|
|||||||
dataStatus.status.value = DataStatus.loaded;
|
dataStatus.status.value = DataStatus.loaded;
|
||||||
|
|
||||||
// listen the video player events
|
// listen the video player events
|
||||||
if (!_listenersInitialized) {
|
|
||||||
startListeners();
|
startListeners();
|
||||||
}
|
|
||||||
await _initializePlayer();
|
await _initializePlayer();
|
||||||
} catch (err, stackTrace) {
|
} catch (err, stackTrace) {
|
||||||
dataStatus.status.value = DataStatus.error;
|
dataStatus.status.value = DataStatus.error;
|
||||||
@@ -1136,10 +1131,10 @@ class PlPlayerController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// 移除事件监听
|
/// 移除事件监听
|
||||||
void removeListeners() {
|
Future<void> removeListeners() async {
|
||||||
for (final s in subscriptions) {
|
_statusListeners.clear();
|
||||||
s.cancel();
|
_positionListeners.clear();
|
||||||
}
|
await Future.wait(subscriptions.map((e) => e.cancel()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 跳转至指定位置
|
/// 跳转至指定位置
|
||||||
@@ -1672,10 +1667,11 @@ class PlPlayerController {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isCloseAll = false;
|
||||||
Future<void> dispose() async {
|
Future<void> dispose() async {
|
||||||
// 每次减1,最后销毁
|
// 每次减1,最后销毁
|
||||||
cancelLongPressTimer();
|
cancelLongPressTimer();
|
||||||
if (_playerCount > 1) {
|
if (!isCloseAll && _playerCount > 1) {
|
||||||
_playerCount -= 1;
|
_playerCount -= 1;
|
||||||
_heartDuration = 0;
|
_heartDuration = 0;
|
||||||
if (!Get.previousRoute.startsWith('/video')) {
|
if (!Get.previousRoute.startsWith('/video')) {
|
||||||
@@ -1687,8 +1683,6 @@ class PlPlayerController {
|
|||||||
_playerCount = 0;
|
_playerCount = 0;
|
||||||
_clearPreview();
|
_clearPreview();
|
||||||
Utils.channel.setMethodCallHandler(null);
|
Utils.channel.setMethodCallHandler(null);
|
||||||
pause();
|
|
||||||
try {
|
|
||||||
_timer?.cancel();
|
_timer?.cancel();
|
||||||
_timerForSeek?.cancel();
|
_timerForSeek?.cancel();
|
||||||
_timerForShowingVolume?.cancel();
|
_timerForShowingVolume?.cancel();
|
||||||
@@ -1705,18 +1699,11 @@ class PlPlayerController {
|
|||||||
// playerStatus.status.close();
|
// playerStatus.status.close();
|
||||||
// dataStatus.status.close();
|
// dataStatus.status.close();
|
||||||
|
|
||||||
if (_videoPlayerController != null) {
|
await removeListeners();
|
||||||
var pp = _videoPlayerController!.platform!;
|
_videoPlayerController?.dispose();
|
||||||
await pp.setProperty('audio-files', '');
|
|
||||||
removeListeners();
|
|
||||||
await _videoPlayerController!.dispose();
|
|
||||||
_videoPlayerController = null;
|
_videoPlayerController = null;
|
||||||
}
|
|
||||||
_instance = null;
|
_instance = null;
|
||||||
videoPlayerServiceHandler?.clear();
|
videoPlayerServiceHandler?.clear();
|
||||||
} catch (err) {
|
|
||||||
if (kDebugMode) debugPrint(err.toString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updatePlayCount() {
|
static void updatePlayCount() {
|
||||||
|
|||||||
Reference in New Issue
Block a user