颤抖的语音搜索

时间:2020-06-22 10:27:23

标签: flutter search voice-recognition

我用TextField制作了一个搜索栏,如果您通过onChanged()属性在其中键入内容,它将搜索查询。现在我正在使用voice_recognition插件。我正在发出声音并分配给textController以在SearchBar中显示它。当我将语音分配给文本控制器时,它不会搜索查询,只是将其分配并显示在TextField(SearchBar)中,除非我开始输入。用户在TextField(SearchBar)内输入语音后,如何触发onChanged 这是我的示例代码:

//这是搜索栏,我正在将语音转录分配给将其分配给SearchBar的控制器。 OnChanged属性调用正在搜索查询的函数

  Padding(
        padding: const EdgeInsets.all(20),
        child: TextField(
          onChanged: (text) {
            _con.refreshSearch(text);
          },
          onSubmitted: (text) {
            _con.saveSearch(text);
          },
          controller: _searchController,
          autofocus: true,
          decoration: InputDecoration(
            contentPadding: EdgeInsets.all(12),
            hintText: S.of(context).search_for_product,
            hintStyle: Theme.of(context)
                .textTheme
                .caption
                .merge(TextStyle(fontSize: 14)),
            prefixIcon:
                Icon(Icons.search, color: Theme.of(context).accentColor),
            border: OutlineInputBorder(
                borderSide: BorderSide(
                    color: Theme.of(context).focusColor.withOpacity(0.1))),
            focusedBorder: OutlineInputBorder(
                borderSide: BorderSide(
                    color: Theme.of(context).focusColor.withOpacity(0.3))),
            enabledBorder: OutlineInputBorder(
                borderSide: BorderSide(
                    color: Theme.of(context).focusColor.withOpacity(0.1))),
            suffixIcon: Row(
              mainAxisSize: MainAxisSize.min,
              mainAxisAlignment: MainAxisAlignment.end,
              children: [
                InkWell(
                  onTap: scanBarcode,
                  child: Image.asset(
                    "assets/img/barcode.png",
                    height: 20,
                    color: Colors.deepOrangeAccent,
                  ),
                ),
                _buildVoiceInput(
                  onPressed: _speechRecognitionAvailable && !_isListening
                      ? () => start()
                      : () => stop(),
                  label: _isListening ? S.of(context).listening : '',
                ),

              ],
            ),
      ),
    ),
  ),

0 个答案:

没有答案