首页 > 解决方案 > 颤振异步功能被跳过

问题描述

因此,当我发现某个函数由于某种原因被 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() 函数被忽略。

标签: flutterdart

解决方案


推荐阅读