Как я могу получить продолжительность аудиофайла актива в приложении Flutter с помощью аудиоплееров - PullRequest
0 голосов
/ 05 августа 2020

Во время воспроизведения звука я хочу показать временную страницу со счетчиком. Я сделал одноэлементный класс для воспроизведения звука и использую Timer для задержки, но я не могу понять, как получить продолжительность текущего звука. У меня всегда есть продолжительность предыдущего аудио.

Я использую player.getDuration (), он возвращает Future, поэтому я получаю продолжительность предыдущего аудиофайла, потому что таймер запускается перед будущим player.getDuration () возвращает значение .

  class Audio {
  static final playerCache = AudioCache();
  static AudioPlayer audioPlayer;

  static void play(String audioName) async {
    audioPlayer = await playerCache.play('$audioName.mp3');
  }

  static void stop() {
    audioPlayer.stop();
  }
}
  class SpeakPage extends StatelessWidget {
  int duration;

  @override
  Widget build(BuildContext context) {
    int index = QuestionBank.getQuestionIndex();
    Audio.play('$index');
    
    Timer(
        Duration(seconds: duration),
        () => Navigator.of(context).pushReplacement(
            MaterialPageRoute(builder: (BuildContext context) => QuizPage())));

    return Container(
      color: kBackGrndColor,
      child: SpinKitWave(
        type: SpinKitWaveType.center,
        color: kIvory,
        size: 110.0,
      ),
    );
  }
}

...