「main中,按下新增資料的按鈕時,多增加判斷Spinner的選項。如果選擇「文字」,就增加參數為1的InputData,如果選擇「間距」,就增加參數為2的InputData。」
「如果輸入匡沒有填入內容,就不要新增資料。」
看似很複雜的要求,但是對人工智能來說意外輕鬆的好懂。
FloatingActionButton(
onPressed: () {
if (textController.text.isNotEmpty) { // 檢查 TextField 是否有輸入內容
setState(() {
if (dropdownValue == '文字') {
_listData.add(InputData<String>(textController.text, 1));
} else if (dropdownValue == '間隔') {
_listData.add(InputData<String>(textController.text, 2));
}
textController.clear();
});
}
},
tooltip: 'Increment',
child: const Icon(Icons.add),
),
接著...就是要新增執行緒對如何執行「間隔」類別資料的差異化。
好饒舌,間單來說,執行緒逐一讀取資料然後「交給人工語音功能發音」的地方,需要新增「如果資料的類型是2,則間隔X秒。」這樣的判別。
跟AI這樣說:「TtsRecorder裡讀取InputData時,type為1才使用語音,否則間隔五秒後讀取下一則InputData。」
void processQueue() {
if (_queue.isNotEmpty) {
var inputData = _queue.removeFirst();
if (inputData.type == 1 && inputData.value is String) {
// Speak the text
_utterance!.text = inputData.value;
_synthesis!.speak(_utterance!);
checkSpeaking();
} else {
// Wait for 5 seconds and then process the next InputData
Future.delayed(Duration(seconds: 5), () {
processQueue();
});
}
}
}
嗯~一次到位、沒有錯誤。