diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index e8e7447a..6a0a3094 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -63,7 +63,7 @@ class _HeaderControlState extends State { // late StreamSubscription fullScreenStatusListener; late bool horizontalScreen; RxString now = ''.obs; - late Timer clock; + Timer? clock; late String defaultCDNService; bool get isFullScreen => widget.controller!.isFullScreen.value; @@ -82,7 +82,6 @@ class _HeaderControlState extends State { setting.get(SettingBoxKey.horizontalScreen, defaultValue: false); defaultCDNService = setting.get(SettingBoxKey.CDNService, defaultValue: CDNService.backupUrl.code); - startClock(); } // void listenFullScreenStatus() { @@ -102,10 +101,22 @@ class _HeaderControlState extends State { void dispose() { widget.floating?.dispose(); // fullScreenStatusListener.cancel(); - clock.cancel(); + clock?.cancel(); super.dispose(); } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + if (MediaQuery.of(context).orientation == Orientation.landscape && + (isFullScreen || !horizontalScreen)) { + startClock(); + } else { + clock?.cancel(); + clock = null; + } + } + /// 设置面板 void showSettingSheet() { showModalBottomSheet( @@ -1307,7 +1318,7 @@ class _HeaderControlState extends State { } startClock() { - clock = Timer.periodic(const Duration(seconds: 1), (Timer t) { + clock ??= Timer.periodic(const Duration(seconds: 1), (Timer t) { if (!mounted) { return; }