Флаттер фоновый звук с индикатором выполнения
Я хочу воспроизвести звук из потока. Я использовал для этого Just Audio . Я хочу, чтобы индикатор выполнения, такой как индикатор выполнения аудио-видео, также воспроизводил звук в фоновом режиме с помощью Audio Service .
Я использовал примеры для всех из них, и они работают индивидуально, но я не могу их объединить. Не могли бы вы помочь с примером того, как я могу это сделать?
1 ответ
Пример из audio_service плагин содержит , как использовать audio_service вместе с just_audio. (объединение 2 пакетов сделано)
Ниже указано, что дано в примере плагина audio_service.
// A seek bar.
StreamBuilder<MediaState>(
stream: _mediaStateStream,
builder: (context, snapshot) {
final mediaState = snapshot.data;
return SeekBar(
duration:
mediaState?.mediaItem?.duration ?? Duration.zero,
position: mediaState?.position ?? Duration.zero,
onChangeEnd: (newPosition) {
AudioService.seekTo(newPosition);
},
);
},
),
...
class SeekBar extends StatefulWidget {
final Duration duration;
final Duration position;
final ValueChanged<Duration>? onChanged;
final ValueChanged<Duration>? onChangeEnd;
SeekBar({
required this.duration,
required this.position,
this.onChanged,
this.onChangeEnd,
});
@override
_SeekBarState createState() => _SeekBarState();
}
// more code in the plugin example
Теперь из приведенного выше кода, как вы можете видеть, в примере используется нестандартный дизайн (в котором используется слайдер ).
Вместо настраиваемого слайдера вы можете использовать желаемый виджет плагина. в твоем случае.
StreamBuilder<MediaState>(
stream: _mediaStateStream,
builder: (context, snapshot) {
final mediaState = snapshot.data;
return ProgressBar(
total:
mediaState?.mediaItem?.duration ?? Duration.zero,
progress: mediaState?.position ?? Duration.zero,
onSeek: (newPosition) {
AudioService.seekTo(newPosition);
},
);
},
),
Это изменение для вышеуказанного
SeekBar
с участием
ProgressBar
. (Объединение 3-го пакета сделано)
Примечание: для
buffered
. Вы можете получить
bufferedPosition
из audio_service
PlaybackStateStream
.