Остановить аудиоцикл (пакет аудиоплееров)

Я новичок в программировании флаттера и хочу создать приложение, в котором мне нужен аудиофайл для воспроизведения/зацикливания в фоновом режиме. Однако он должен останавливаться при двойном нажатии на экран.

Звук сохраняется в папке с ресурсами. Я могу играть в нее, но я не знаю, как приостановить/остановить ее. Я использую этот упаковка.

  @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');
        },

Вы пробовали audioCache.clearCache()?

CopsOnRoad 29.05.2019 14:05

да, это не работает.

Silent Tree 29.05.2019 14:06

К сожалению, я получаю сообщение об ошибке: «Метод «стоп» был вызван при нулевом значении».

Silent Tree 29.05.2019 14:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
3
6 780
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно будет получить экземпляр 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
}

Для чего это ??

Jalil 29.05.2019 14:27
?. используется для проверки нуля, поэтому stop() будет вызываться, только если player != null.
CopsOnRoad 29.05.2019 14:29

Cooooool, мы узнаем новые вещи каждый день. И я не знаю. Я не тот, кто задал вопрос, просто хотел знать.

Jalil 29.05.2019 14:30

Теперь это работает! Большое спасибо и хорошего дня!

Silent Tree 29.05.2019 14:51

Привет, @CopsOnRoad. Я заметил, что вы отклонили мою правку, потому что play and loop are 2 different things. Я знаю об этом. Если вы обратите внимание на заголовок вопроса, вы заметите, что OP на самом деле зацикливает звук, а не только воспроизводит его, хотя он/она использует метод play() в примере кода.

Hugo Passos 02.06.2019 21:05

@HugoPassos Да, вы правы, в заголовке OP попросил loop, но в коде он использовал play, поэтому я отклонил ваше редактирование. Надеюсь, вы не возражали.

CopsOnRoad 03.06.2019 17:21

Есть ли способ приостановить возобновление AudioCache?

Taba 10.05.2020 20:18

Работает ли это только с mp3-аудио, так как я использовал тот же самый код для своего аудио, и тогда я больше не слышу звук своего аудио, я не могу слышать/воспроизводить и не могу его остановить

Nabia Salman 07.06.2021 19:13

Другие вопросы по теме