iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
生成式 AI

用AI寫程式也是要點本事的系列 第 27

按照Spinner的選項內容新增不同的資料

  • 分享至 

  • xImage
  •  

「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();
      });
    }
  }
}

嗯~一次到位、沒有錯誤。


上一篇
新的UI!DropdownButton!
下一篇
轉換資料(將文字變成數值)
系列文
用AI寫程式也是要點本事的30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言