diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index 81bfbda4..2a83061e 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -99,7 +99,7 @@ class _VideoDetailPageState extends State onUserLeaveHintListener.setMethodCallHandler((call) async { if (call.method == 'onUserLeaveHint') { if (autoPiP) { - autoEnterPip(); + autoEnterPip(); } } }); @@ -202,9 +202,10 @@ class _VideoDetailPageState extends State videoDetailController.hiddenReplyReplyPanel(); hideStatusBar(); } - setState(() { - isFullScreen.value = status; - }); + isFullScreen.value = status; + if (mounted) { + setState(() {}); + } if (!status) { showStatusBar(); if (horizontalScreen) { @@ -250,13 +251,20 @@ class _VideoDetailPageState extends State fullScreenStatusListener.cancel(); plPlayerController!.pause(); } - setState(() => isShowing = false); + isShowing = false; + if (mounted) { + setState(() => {}); + } super.didPushNext(); } @override // 返回当前页面时 void didPopNext() async { + isShowing = true; + if (mounted) { + setState(() => {}); + } videoDetailController.isFirstTime = false; final bool autoplay = autoPlayEnable; videoDetailController.playerInit(autoplay: autoplay); @@ -274,7 +282,6 @@ class _VideoDetailPageState extends State if (plPlayerController != null) { listenFullScreenStatus(); } - setState(() => isShowing = true); super.didPopNext(); } diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index 4afa97e5..5c0d633c 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -73,7 +73,11 @@ class _HeaderControlState extends State { .videoDetailCtr!.plPlayerController.isFullScreen .listen((bool status) { isFullScreen = status; - setState(() {}); + + /// TODO setState() called after dispose() + if (mounted) { + setState(() {}); + } }); }