Как остановить воспроизведение звука во флаттере - PullRequest
0 голосов
/ 27 апреля 2020

Мой код предназначен для воспроизведения песни, когда пользователь нажимает кнопку воспроизведения, и мне нужна кнопка, чтобы остановить воспроизведение музыки c. Я выбрал воспроизведение музыки c следующим образом, потому что функция аудио-кэша почему-то не работала в моем коде (я получал сообщение об ошибке, что мой файл не может быть загружен), хотя этот метод работает, я понятия не имею, как чтобы не дать музы c играть вот так.

import 'dart:io';
import 'package:audioplayers/audio_cache.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
import 'package:audioplayers/audioplayers.dart';
import 'dart:io';

class bodyscan extends StatefulWidget {
  @override
  _bodyscanState createState() => _bodyscanState();
}

enum PlayerState {stopped,playing,paused}

class _bodyscanState extends State<bodyscan> {

  String mp3Uri = "";
  void _playsound(){
    AudioPlayer player = AudioPlayer();
    player.play(mp3Uri);

  }

  void _loadsound() async {
    final ByteData data = await rootBundle.load("audio/doomed.m4a");
    Directory tempDir = await getTemporaryDirectory();
    File tempFile = File('${tempDir.path}/doomed.m4a');
    await tempFile.writeAsBytes(data.buffer.asUint8List(), flush:true);
    mp3Uri = tempFile.uri.toString();
  }
  @override
  void initState() {
    _loadsound();
    super.initState();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[

              InkWell(
                enableFeedback: false,
                child :Container (
                  color: Colors.blue,
                  padding: const EdgeInsets.all(20.0),
                  child: Text('PlaySound', style: TextStyle(color: Colors.white),) ,

                ),
                onTap: _playsound,
              ),
            ],
          ),
        )
    );
  }

}

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Просто проверьте, есть ли метод для остановки звука из приведенного ниже метода

_audioPlayer.stop();

Просто посмотрите этот пример, созданный плагином Audioplayers:

https://github.com/luanpotter/audioplayers/tree/master/example/lib

Вы можете использовать чернильницу ниже, где onTap вы можете использовать этот метод остановки.

0 голосов
/ 27 апреля 2020

Вы пробовали просто player.stop()?

Если это не сработает, то, возможно, вам следует попробовать переместить AudioPlayer из метода playMusi c снаружи, например:

    AudioPlayer player = new AudioPlayer();
    String mp3Uri = "";

    void _playSound() {
      player.play(mp3Uri);
    }

    void _stopSound() {
      player.stop();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...