fix: 媒体通知进度条未按预期停止

This commit is contained in:
guozhigq
2024-03-07 23:35:39 +08:00
committed by orz12
parent 408ff0e4e1
commit 464ffac074
3 changed files with 9 additions and 6 deletions

View File

@@ -579,8 +579,10 @@ class PlPlayerController {
if (event) {
playerStatus.status.value = PlayerStatus.playing;
} else {
// playerStatus.status.value = PlayerStatus.paused;
playerStatus.status.value = PlayerStatus.paused;
}
videoPlayerServiceHandler.onStatusChange(
playerStatus.status.value, isBuffering.value);
/// 触发回调事件
for (var element in _statusListeners) {

View File

@@ -26,6 +26,7 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler {
static final List<MediaItem> _item = [];
Box setting = GStrorage.setting;
bool enableBackgroundPlay = false;
PlPlayerController player = PlPlayerController.getInstance();
VideoPlayerServiceHandler() {
revalidateSetting();
@@ -38,12 +39,12 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler {
@override
Future<void> play() async {
PlPlayerController.getInstance().play();
player.play();
}
@override
Future<void> pause() async {
PlPlayerController.getInstance().pause();
player.pause();
}
@override
@@ -51,7 +52,7 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler {
playbackState.add(playbackState.value.copyWith(
updatePosition: position,
));
await PlPlayerController.getInstance().seekTo(position);
await player.seekTo(position);
}
Future<void> setMediaItem(MediaItem newMediaItem) async {

View File

@@ -20,7 +20,7 @@ class AudioSessionHandler {
session.interruptionEventStream.listen((event) {
final player = PlPlayerController.getInstance();
if (event.begin) {
if (player.playerStatus != PlayerStatus.playing) return;
if (!player.playerStatus.playing) return;
switch (event.type) {
case AudioInterruptionType.duck:
player.setVolume(player.volume.value * 0.5);
@@ -52,7 +52,7 @@ class AudioSessionHandler {
// 耳机拔出暂停
session.becomingNoisyEventStream.listen((_) {
final player = PlPlayerController.getInstance();
if (player.playerStatus == PlayerStatus.playing) {
if (player.playerStatus.playing) {
player.pause();
}
});