所以当我发现某个函数由于某种原因被 Dart 跳过时,我试图组织我的代码并将其分解为更小的函数,如果有人精通异步编程;将不胜感激解释为什么会发生这种情况。
代码:
void _converse(bool first_run) async {
first_run ? _speak("how may I help you?") : _speak("need anything else?");
sleep(Duration(seconds: 3));
await _listen();// the _listen function
sleep(Duration(seconds: 10));
first_run = false;
}
_listen() 代码:
Future _listen() async {
String _question = '-';
if (!_isListening) {
bool available = await _speech.initialize(
onStatus: (val) => print('onStatus: $val'),
onError: (val) => print('onError: $val'),
);
if (available) {
setState(() => _isListening = true);
_speech.listen(
onResult: (val) => setState(() {
_text = val.recognizedWords;
if (val.hasConfidenceRating && val.confidence > 0) {
_confidence = val.confidence;
}
}),
);
}
} else {
setState(() => _isListening = false);
// test placeholder
process_speech(_text);
_speech.stop();
}
}
应该接收语音输入的 _listen() 函数被忽略了。