Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何仅在按下按钮时调用方法?_Dart_Flutter - Fatal编程技术网

Dart 如何仅在按下按钮时调用方法?

Dart 如何仅在按下按钮时调用方法?,dart,flutter,Dart,Flutter,我正在尝试制作一个语音命令按钮,在按下时与一起工作。我有两个方法,一个按钮调用第一个开始录制的方法,第二个停止录制。如何使我使用一个按钮(按下时)或例如,按下按钮时使用1种方法,松开按钮时使用第2种方法?我不知道该用什么。使用手势检测器作为小部件,分别使用onLongPressUp和onLongPressStart GestureDetector( onLongPressStart: _startRec, // start recording when long pressed onLo

我正在尝试制作一个语音命令按钮,在按下时与一起工作。我有两个方法,一个按钮调用第一个开始录制的方法,第二个停止录制。如何使我使用一个按钮(按下时)或例如,按下按钮时使用1种方法,松开按钮时使用第2种方法?我不知道该用什么。

使用
手势检测器
作为小部件,分别使用
onLongPressUp
onLongPressStart

GestureDetector(
  onLongPressStart: _startRec, // start recording when long pressed
  onLongPressUp: _stopRec, // stop recording when released
  child: Text("Hold to record"),
);

这个答案几乎与@CopsOnRoad给出的答案相似,唯一的区别是
onLongPressStart
在这里
onLongPress
。因为没有像
onlong按start
这样的参数。我也试着编辑这个答案

GestureDetector(
    onLongPress: () {
        print('start recording');
    },
    onLongPressUp: () {
        print('stop recording');
    },
    child: Text("Hold to record"),
)

您可以保留一个标志,并在按下按钮时进行设置。如果设置了标志,则调用函数停止录制,如果未设置,则调用函数启动录制。(就像这样,你不必在录音时一直按下按钮)。我的想法是,我希望在录音时按下按钮。我也不明白国旗的问题。如果标志设置为false,则当我第一次按下时为true,如何将其返回false和自动停止录制?您所说的“自动停止”录制是什么意思?如果您希望在整个录制过程中按下按钮,下面添加的答案是正确的。我个人觉得在录音时按住按钮很烦人,所以我建议这样做。:)感谢您的编辑,但是存在一个
onLongPressStart
,它不同于
onLongPress
,因为后者只有在您长按时才会被调用(这里只收到一个回调),而不像
onLongPressStart
。但是当我使用您的代码时,它显示了错误,它说没有这样的参数,当我看到GestureDetector类时,它说没有这样的参数。所以,我做了编辑。是的,我做了与@KalpeshKundanani相同的事情,因为我找不到onLongPress start,所以我做了onLongPress和onLongPress up。如果答案对你有帮助,请投票,这样我就可以得到一些学分。谢谢