Сценарий: у меня есть набор дочерних элементов, созданных с помощью Listview.builder, в котором у каждого дочернего элемента есть кнопка. Теперь я хочу, чтобы был вызван конкретный индекс дочернего метода TTS (преобразование текста в речь). Реализовать это не проблема. Но плагин flutter_tts предоставляет методы setStartHandler, setCompletionHandler, которые вызываются всякий раз, когда tts запускается и завершает свою работу. Но оба этих метода нельзя поместить в initState, поскольку им нужен доступ к индексной переменной.
body: ListView.builder
(
itemCount: litems.length,
itemBuilder: (BuildContext ctxt, int index) {
return Column(children:[RaisedButton(onPressed:(){
flutterTts.setStartHandler(() {
setState(() {
ttsState = TtsState.playing;
litems[index].isPlaying = true;
});
});
flutterTts.setCompletionHandler(() {
setState(() {
ttsState = TtsState.stopped;
litems[index].isPlaying = false;
});
});
//custom speak() method which invokes TTS
_speak(litems[index].text);
//rest of the code
},
child:widget)
,],
);
}
)
Приведенный выше код является просто примером. пожалуйста, скажите мне, это хороший подход или есть лучшее решение. Заранее спасибо