Во время воспроизведения звука я хочу показать временную страницу со счетчиком. Я сделал одноэлементный класс для воспроизведения звука и использую 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,
),
);
}
}