fix: Properly close player on user switch

This commit is contained in:
PartyDonut 2025-08-14 22:17:42 +02:00
parent fc8a0e153b
commit e4c61aa43d
3 changed files with 9 additions and 5 deletions

View file

@ -12,6 +12,7 @@ import 'package:fladder/providers/api_provider.dart';
import 'package:fladder/providers/service_provider.dart'; import 'package:fladder/providers/service_provider.dart';
import 'package:fladder/providers/shared_provider.dart'; import 'package:fladder/providers/shared_provider.dart';
import 'package:fladder/providers/sync_provider.dart'; import 'package:fladder/providers/sync_provider.dart';
import 'package:fladder/providers/video_player_provider.dart';
part 'user_provider.g.dart'; part 'user_provider.g.dart';
@ -171,6 +172,7 @@ class User extends _$User {
} }
Future<void> logoutUser() async { Future<void> logoutUser() async {
await ref.read(videoPlayerProvider).stop();
if (state == null) return; if (state == null) return;
userState = null; userState = null;
} }

View file

@ -58,10 +58,7 @@ class _CurrentlyPlayingBarState extends ConsumerState<FloatingPlayerBar> {
} }
} }
Future<void> stopPlayer() async { Future<void> stopPlayer() async => ref.read(videoPlayerProvider).stop();
ref.read(mediaPlaybackProvider.notifier).update((state) => state.copyWith(state: VideoPlayerState.disposed));
return ref.read(videoPlayerProvider).stop();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View file

@ -11,6 +11,7 @@ import 'package:wakelock_plus/wakelock_plus.dart';
import 'package:fladder/models/item_base_model.dart'; import 'package:fladder/models/item_base_model.dart';
import 'package:fladder/models/items/media_streams_model.dart'; import 'package:fladder/models/items/media_streams_model.dart';
import 'package:fladder/models/media_playback_model.dart';
import 'package:fladder/models/playback/playback_model.dart'; import 'package:fladder/models/playback/playback_model.dart';
import 'package:fladder/models/settings/video_player_settings.dart'; import 'package:fladder/models/settings/video_player_settings.dart';
import 'package:fladder/providers/settings/client_settings_provider.dart'; import 'package:fladder/providers/settings/client_settings_provider.dart';
@ -237,6 +238,10 @@ class MediaControlsWrapper extends BaseAudioHandler {
@override @override
Future<void> stop() async { Future<void> stop() async {
final playbackModel = ref.read(playBackModel);
if (playbackModel == null) return;
ref.read(mediaPlaybackProvider.notifier).update((state) => state.copyWith(state: VideoPlayerState.disposed));
WakelockPlus.disable(); WakelockPlus.disable();
super.stop(); super.stop();
_player?.stop(); _player?.stop();
@ -247,7 +252,7 @@ class MediaControlsWrapper extends BaseAudioHandler {
// //Small delay so we don't post right after playback/progress update // //Small delay so we don't post right after playback/progress update
await Future.delayed(const Duration(seconds: 1)); await Future.delayed(const Duration(seconds: 1));
await ref.read(playBackModel)?.playbackStopped(position ?? Duration.zero, totalDuration, ref); await playbackModel.playbackStopped(position ?? Duration.zero, totalDuration, ref);
ref.read(mediaPlaybackProvider.notifier).update((state) => state.copyWith(position: Duration.zero)); ref.read(mediaPlaybackProvider.notifier).update((state) => state.copyWith(position: Duration.zero));
smtc?.setPlaybackStatus(PlaybackStatus.stopped); smtc?.setPlaybackStatus(PlaybackStatus.stopped);