我有下面的代码在我的flutter应用程序中制作标签。我希望添加speech_to_text的功能,用户说话时文本会显示在字段中。如何做到这一点?我可以在纯文本字段中单独添加speech a to a text的功能,但不能将其与标签集成。这是我的问题。
TextFieldTags(
textfieldTagsController: _controllerD,
textSeparators: const [','],
letterCase: LetterCase.normal,
validator: (String tag) {
diagnosis.add(tag);
},
inputfieldBuilder:
(context, tec, focus, error, onChanged, onSubmitted) {
return ((context, sc, tags, onTagDelete) {
return Padding(
padding: const EdgeInsets.all(10.0),
child: TextField(
controller: tec,
focusNode: focus,
decoration: InputDecoration(
isDense: true,
border: const OutlineInputBorder(
borderSide: BorderSide(
color: Colors.blueGrey,
width: 3.0,
),
),
focusedBorder: const OutlineInputBorder(
borderSide: BorderSide(
color: Colors.blueGrey,
width: 3.0,
),
),
hintText: _controllerD.hasTags ? '' : "Enter patient's diagnosis...",
errorText: error,
prefixIconConstraints:
BoxConstraints(maxWidth: _distanceToField * 0.74),
prefixIcon: tags.isNotEmpty
? SingleChildScrollView(
controller: sc,
scrollDirection: Axis.horizontal,
child: Row(
children: tags.map((String tag) {
return Container(
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
color: Colors.blueGrey,
),
margin: const EdgeInsets.symmetric(
horizontal: 5.0),
padding: const EdgeInsets.symmetric(
horizontal: 10.0, vertical: 5.0),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
InkWell(
child: Text(
'$tag',
style: const TextStyle(
color: Colors.white),
),
onTap: () {
print("$tag selected");
},
),
const SizedBox(width: 4.0),
InkWell(
child: const Icon(
Icons.cancel,
size: 14.0,
color: Color.fromARGB(
255, 233, 233, 233),
),
onTap: () {
onTagDelete(tag);
diagnosis.remove(tag);
},
)
],
),
);
}).toList()),
)
: null,
),
onChanged: onChanged,
onSubmitted: (tag){
FocusScope.of(context).requestFocus(focus);
},
),
);
});
},
),
1条答案
按热度按时间rsl1atfo1#
你可以使用这个叫做
speech_to_text
(link)的软件包,这个软件包可以让你把语音转换成文本,就像你提到的那样,它还提供了开始、停止和持续收听语音以及把语音转换成文本的方法。下面是一个示例代码(来源于pub.dev):
这段代码没有描述如何将值放入
TextField
,但您可以通过以下方式轻松实现:1.您可以使用这个包来监听数据并将其转换为文本格式。
1.您可以将
TextEditingController
设置为文本值,只需将其赋值即可。示例:
textController.text = value
//其中value是语音到文本数据,textController是TextEditingController
。