Текст в речь для таймера обратного отсчета - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть контроллер, который отображает таймер для моего приложения обратного отсчета.

screenshot

Код для отображения таймера:

String get timerString {
    duration = controller.duration * controller.value;
    return '${duration.inMinutes}:${(duration.inSeconds % 60).toString().padLeft(2, '0')}';
  }

Я хочу добавьте TTS, чтобы говорить всякий раз, когда таймер переходит на «3,2,1». Как обратный отсчет TTS. Я попытался реализовать TTS в функции timerString, но продолжительность меняется слишком быстро, чтобы TTS мог говорить.

Future _speak(String text) async {
   var result = await flutterTts.speak(text);
 }

1 Ответ

1 голос
/ 02 февраля 2020

Не ждите speak() метода. Просто запустите его и не ждите.

Вот функция, которая ведет обратный отсчет.

void countdown(FlutterTts tts, int from, Duration delay) async {
  for (var i = from; i > 0; i--) {
    tts.speak(i.toString());
    await Future.delayed(delay);
  }
}
...