如何清除audio_service中媒体项目的队列



我尝试updateQueue([])重置队列(不起作用(。我之所以想这样做,是因为我在skipToNext上添加了mediaItem,就像在下面一样

mediaItem.add(
MediaItem(
id: lecture.url!,
title: lecture.name!,
artUri: Uri.parse(bookArt),
artist: "artist",
album: bookName
)
);
_player.seekToNext();

每当我播放任何音频时,它都从我离开队列的地方开始,这显然意味着我必须清除队列。那么我该怎么做呢?

我使用的包是audio_service一个隔离分支

您可以将此函数放在访问/使用队列的同一类中。如果你遵循@XiaoHui提到的教程,你可能应该把它放在audio_handler.dart文件中。这个函数的优点是你根本不必担心潜在的指数!

void clearQueue() {
while (queue.value.length > 0) {
queue.value.removeLast();
}
}

如果您遵循本教程Suragch。在page_manager.dart中,您将看到remove()功能

void remove() {
final lastIndex = _audioHandler.queue.value.length - 1;
if (lastIndex < 0) return;
_audioHandler.removeQueueItemAt(lastIndex);  }

此函数从AudioService queueJustAudio playlist中删除最后一项。

因此,您可以循环播放列表并调用remove()。它将清除所有playlistqueue

for (int i = 0; i < playlist.length; i++) {
remove();
}

希望这能回答你的问题!

相关内容

  • 没有找到相关文章