build method
Implementation
@override
GlobalPlayerState build() {
// Keep player state alive across route transitions to avoid restarting media.
ref.keepAlive();
ref.onDispose(() {
PipMode.isInPipMode.removeListener(_onPipModeChanged);
unawaited(_disposeControllers());
});
PipMode.isInPipMode.addListener(_onPipModeChanged);
// Link system media controls to our provider
mediaHandler?.onPlayCallback = () async => togglePlayPause();
mediaHandler?.onPauseCallback = () async => togglePlayPause();
mediaHandler?.onStopCallback = () async => stop();
mediaHandler?.onSeekCallback = (pos) async => state.videoPlayerController?.seekTo(pos);
mediaHandler?.onSkipToNextCallback = () async => playNext();
final prefs = ref.read(sharedPreferencesProvider);
return GlobalPlayerState(
autoplayNext: prefs.getBool(_autoplayNextKey) ?? false,
showVideoDebugInfo: prefs.getBool(_showVideoDebugInfoKey) ?? false,
useDoubleTapSeek: prefs.getBool(_useDoubleTapSeekKey) ?? true,
enableBackgroundPlayback:
prefs.getBool(_enableBackgroundPlaybackKey) ?? false,
enableNativePip: prefs.getBool(_enableNativePipKey) ?? false,
isInPipMode: PipMode.isInPipMode.value,
);
}