Я новичок в программировании флаттера и хочу создать приложение, в котором мне нужен аудиофайл для воспроизведения/зацикливания в фоновом режиме. Однако он должен останавливаться при двойном нажатии на экран.
Звук сохраняется в папке с ресурсами. Я могу играть в нее, но я не знаю, как приостановить/остановить ее. Я использую этот упаковка.
@override
Widget build(BuildContext context) {
audioCache.play('rainsound.mp3', );
return new Scaffold(
child: new GestureDetector(
onDoubleTap: () {
//here I would like to stop the audio
debugPrint('audio stopped');
},
да, это не работает.
К сожалению, я получаю сообщение об ошибке: «Метод «стоп» был вызван при нулевом значении».
Вам нужно будет получить экземпляр AudioPlayer
, чтобы остановить файл, просто используйте await для play()
, чтобы получить экземпляр, и, используя это, вы можете вызвать stop()
. Это рабочий код.
AudioCache cache; // you have this
AudioPlayer player; // create this
void _playFile() async{
player = await cache.play('my_audio.mp3'); // assign player here
}
void _stopFile() {
player?.stop(); // stop the file like this
}
Для чего это ?
?
?.
используется для проверки нуля, поэтому stop()
будет вызываться, только если player != null
.
Cooooool, мы узнаем новые вещи каждый день. И я не знаю. Я не тот, кто задал вопрос, просто хотел знать.
Теперь это работает! Большое спасибо и хорошего дня!
Привет, @CopsOnRoad. Я заметил, что вы отклонили мою правку, потому что play and loop are 2 different things
. Я знаю об этом. Если вы обратите внимание на заголовок вопроса, вы заметите, что OP на самом деле зацикливает звук, а не только воспроизводит его, хотя он/она использует метод play()
в примере кода.
@HugoPassos Да, вы правы, в заголовке OP попросил loop
, но в коде он использовал play
, поэтому я отклонил ваше редактирование. Надеюсь, вы не возражали.
Есть ли способ приостановить возобновление AudioCache?
Работает ли это только с mp3-аудио, так как я использовал тот же самый код для своего аудио, и тогда я больше не слышу звук своего аудио, я не могу слышать/воспроизводить и не могу его остановить
Вы пробовали
audioCache.clearCache()
?