mod: 清除buffer listener

This commit is contained in:
orz12
2024-03-13 21:20:04 +08:00
parent 917d1f257c
commit a302b6f703

View File

@@ -67,6 +67,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
late final MethodChannel onUserLeaveHintListener; late final MethodChannel onUserLeaveHintListener;
late AnimationController _animationController; late AnimationController _animationController;
late Animation<double> _animation; late Animation<double> _animation;
StreamSubscription<Duration>? _bufferedListener;
@override @override
void initState() { void initState() {
@@ -243,6 +244,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
AutoOrientation.portraitUpMode(); AutoOrientation.portraitUpMode();
} }
shutdownTimerService.handleWaitingFinished(); shutdownTimerService.handleWaitingFinished();
_bufferedListener?.cancel();
if (plPlayerController != null) { if (plPlayerController != null) {
plPlayerController!.removeStatusLister(playerListener); plPlayerController!.removeStatusLister(playerListener);
fullScreenStatusListener.cancel(); fullScreenStatusListener.cancel();
@@ -258,6 +260,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
@override @override
// 离开当前页面时 // 离开当前页面时
void didPushNext() async { void didPushNext() async {
_bufferedListener?.cancel();
/// 开启 /// 开启
if (setting.get(SettingBoxKey.enableAutoBrightness, defaultValue: false) if (setting.get(SettingBoxKey.enableAutoBrightness, defaultValue: false)
as bool) { as bool) {
@@ -295,8 +298,9 @@ class _VideoDetailPageState extends State<VideoDetailPage>
if (autoplay) { if (autoplay) {
// await Future.delayed(const Duration(milliseconds: 300)); // await Future.delayed(const Duration(milliseconds: 300));
if (plPlayerController?.buffered.value == Duration.zero) { if (plPlayerController?.buffered.value == Duration.zero) {
plPlayerController?.buffered.listen((p0) { _bufferedListener = plPlayerController?.buffered.listen((p0) {
if (p0 > Duration.zero) { if (p0 > Duration.zero) {
_bufferedListener!.cancel();
plPlayerController?.seekTo(videoDetailController.defaultST); plPlayerController?.seekTo(videoDetailController.defaultST);
plPlayerController?.play(); plPlayerController?.play();
} }