0

我希望在按下一个麦克风图标时启动语音到文本功能,同时启动噪音计功能。

目前,语音转文本的图标和噪音计的图标是分开的。有没有办法将这些组合成一个图标?

  • 噪声计
IconButton(
    onPressed: () {
        setState(() {
            _isRecording = !_isRecording;

            if (_isRecording) {
                NoiseMeterHelper().start(
                    onData: onData,
                    onError: onError,
                );
            } else {
                NoiseMeterHelper().stop();
            }
        });
    },
    icon: _isRecording ? Icon(Icons.mic) : Icon(Icons.mic),
),
  • Speech_to_text
IconButton(
    onPressed: recognizing ? stopRecording : streamingRecognize,
    icon: recognizing
        ? Icon(Icons.mic, color: Colors.red, size: 30)
        : Icon(Icons.mic, color: Colors.blue,size: 30)
),
4

1 回答 1

1

您可以在一个函数中运行任意数量的onPressed函数。

此外,您不必使用setState()来运行函数。setState用于更新类变量并使用这些更改重建 UI。

如果您正在显示_isRecording或使用它来更新任何 UI,请将其包装在setState. 如果没有,则无需使用setState. 另外,请注意,不正确的使用setState会导致多次不必要的 UI 重建。

尝试这个,

IconButton(
    onPressed: () {
        setState(() {
            _isRecording = !_isRecording;
        });

        if (_isRecording) {
            NoiseMeterHelper().start(
                onData: onData,
                onError: onError,
            );
        } else {
            NoiseMeterHelper().stop();
        }
        recognizing ? stopRecording() : streamingRecognize();
    },
    icon: _isRecording ? Icon(Icons.mic) : Icon(Icons.mic),
),
于 2021-10-03T19:32:09.950 回答