Я использую плагины Flutter: audio_service и just_audio для реализации воспроизведения аудиокниг. Во время модуля приложения я создаю свой собственный AudioHandler следующим образом:
Код: Выделить всё
class AudioHandler extends BaseAudioHandler with SeekHandler {
static final AudioHandler _singleton = AudioHandler._();
static Future init() async {
var audioService = await AudioService.init(
builder: () => AudioHandler(),
config: const AudioServiceConfig(
androidNotificationChannelId: 'nl.dropcatcher.sermons.channel.audio',
androidNotificationChannelName: 'Sermon playback',
androidStopForegroundOnPause: false,
fastForwardInterval: Duration(seconds: 10),
rewindInterval: Duration(seconds: 10),
),
);
audioService.playbackState.add(PlaybackState(
controls: [
MediaControl.pause,
],
systemActions: const {
MediaAction.seek,
MediaAction.seekForward,
MediaAction.seekBackward,
},
androidCompactActionIndices: const [0],
processingState: AudioProcessingState.buffering,
playing: false,
updatePosition: Duration.zero,
bufferedPosition: Duration.zero,
speed: 1.0,
queueIndex: 0,
));
}
factory AudioHandler() {
return _singleton;
}
AudioHandler._();
}
Код: Выделить всё
class _SermonPlayerState extends State {
final AudioPlayer player = AudioPlayer();
@override
void initState() {
// ...
player.play();
}
@override
void dispose() {
// ...
AudioHandler().stop();
player.dispose();
super.dispose();
}
}
Я не вижу API для программного обеспечения скрыть уведомление. Итак, как мне избавиться от этого, когда пользователь больше не находится на странице аудиоплеера?
Подробнее здесь: https://stackoverflow.com/questions/785 ... -disappear
Мобильная версия