From 6dd543a0b88efdc9f2b99bda7ab0649827083579 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Wed, 10 Dec 2025 18:11:48 +0100 Subject: [PATCH] v1.1.2: Add deactivate + lifecycle observer to properly stop player --- .../iptv/screens/native_player_screen.dart | 23 ++++++++++++++++++- .../iptv/widgets/mobile_settings_tab.dart | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/mobile/features/iptv/screens/native_player_screen.dart b/lib/mobile/features/iptv/screens/native_player_screen.dart index cb4a006..b4dc20b 100644 --- a/lib/mobile/features/iptv/screens/native_player_screen.dart +++ b/lib/mobile/features/iptv/screens/native_player_screen.dart @@ -51,7 +51,7 @@ class NativePlayerScreen extends ConsumerStatefulWidget { ConsumerState createState() => _NativePlayerScreenState(); } -class _NativePlayerScreenState extends ConsumerState { +class _NativePlayerScreenState extends ConsumerState with WidgetsBindingObserver { late final Player _player; late final VideoController _controller; bool _isLoading = true; @@ -92,6 +92,9 @@ class _NativePlayerScreenState extends ConsumerState { @override void initState() { super.initState(); + // Register lifecycle observer + WidgetsBinding.instance.addObserver(this); + // Register keyboard handler for remote control HardwareKeyboard.instance.addHandler(_handleKeyEvent); @@ -229,8 +232,26 @@ class _NativePlayerScreenState extends ConsumerState { } } + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + // Pause when app goes to background + if (state == AppLifecycleState.paused || state == AppLifecycleState.inactive) { + _player.pause(); + } + } + + @override + void deactivate() { + // Stop player when widget is being removed from tree + _player.stop(); + super.deactivate(); + } + @override void dispose() { + // Remove lifecycle observer + WidgetsBinding.instance.removeObserver(this); + // Unregister keyboard handler HardwareKeyboard.instance.removeHandler(_handleKeyEvent); diff --git a/lib/mobile/features/iptv/widgets/mobile_settings_tab.dart b/lib/mobile/features/iptv/widgets/mobile_settings_tab.dart index 395c883..0ea0722 100644 --- a/lib/mobile/features/iptv/widgets/mobile_settings_tab.dart +++ b/lib/mobile/features/iptv/widgets/mobile_settings_tab.dart @@ -108,7 +108,7 @@ class _MobileSettingsTabState extends ConsumerState { ), SizedBox(height: 4), Text( - 'Version 1.1.1', + 'Version 1.1.2', style: TextStyle( fontSize: 13, color: AppColors.textSecondary,