v1.1.2: Add deactivate + lifecycle observer to properly stop player

This commit is contained in:
Michael committed 2025-12-10 18:11:48 +01:00
1 parent f46216aa90
commit 6dd543a0b8
2 files changed
+23 -2

No files matched your search

@@ -51,7 +51,7 @@ class NativePlayerScreen extends ConsumerStatefulWidget {
ConsumerState<NativePlayerScreen> createState() => _NativePlayerScreenState();
}
class _NativePlayerScreenState extends ConsumerState<NativePlayerScreen> {
class _NativePlayerScreenState extends ConsumerState<NativePlayerScreen> with WidgetsBindingObserver {
late final Player _player;
late final VideoController _controller;
bool _isLoading = true;
@@ -92,6 +92,9 @@ class _NativePlayerScreenState extends ConsumerState<NativePlayerScreen> {
@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<NativePlayerScreen> {
}
}
@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);
@@ -108,7 +108,7 @@ class _MobileSettingsTabState extends ConsumerState<MobileSettingsTab> {
),
SizedBox(height: 4),
Text(
'Version 1.1.1',
'Version 1.1.2',
style: TextStyle(
fontSize: 13,
color: AppColors.textSecondary,