flutter_tts icon indicating copy to clipboard operation
flutter_tts copied to clipboard

Web app broken, uses system default voice for all locales on iOS 18

Open zpozen opened this issue 1 year ago • 1 comments

🐛 Bug Report

After upgrading to iOS 18, neither setLanguage() nor setVoice() have any effect for Web applications, breaking flutter web applications relying on this functionality.

Expected behavior

setLanguage() uses locale-appropriate voice models. Instead, system default model is used.

Reproduction steps

Simplest repro is running https://dlutton.github.io/flutter_tts/ on iOS device (tried Chrome and Safari browsers).

Configuration

Version: 3.8.x

Platform:

  • [ x] :iphone: iOS -Web
  • [ ] :robot: Android

zpozen avatar Jan 22 '25 23:01 zpozen

I tried to handle this issue manually like this:

flutterTts.setProgressHandler(
  (text, start, end, word) {
    _currentWordStart = (_lastSpokenIndex ?? 0) + start;
    _currentWordEnd = (_lastSpokenIndex ?? 0) + end;
    print("start : $_currentWordStart, end : $_currentWordEnd");
    setState(() {});
  },
);

flutterTts.setPauseHandler(
  () {
    _lastSpokenIndex = _currentWordStart ?? _lastSpokenIndex;
    print("_lastSpokenIndex : $_lastSpokenIndex, end : $_currentWordEnd");
    setState(() {});
  },
);

But it's not reliable — the progress still resets after calling flutterTts.speak() again, and the highlighted word becomes incorrect after resuming from pause.

Let me know if you'd like me to format the full issue body again with this included.

alirezabashi98 avatar Jun 03 '25 10:06 alirezabashi98