Как вызвать метод только при нажатии кнопки?

#dart #flutter

#дротик #флаттер

Вопрос:

Я пытаюсь создать кнопку голосовой команды, которая работает при нажатии. У меня есть 2 метода, одна кнопка вызывает первый метод, который запускает запись, 2-й останавливает запись. Как я могу сделать так, чтобы я использовал одну кнопку (при нажатии) или, например, 1 метод при нажатии 2-го метода при отпускании кнопки? Я не знаю, что использовать.

Комментарии:

1. Вы могли бы сохранить флаг и установить его при нажатии кнопки. Если флаг установлен, вы вызываете функцию, чтобы остановить запись, а если это не так, вы вызываете функцию, чтобы запустить ее. (Таким образом, вам не нужно удерживать кнопку нажатой во время записи).

2. идея заключается в том, что я хочу, чтобы кнопка была нажата во время записи. Также я не понимаю проблему с флагом. Если флаг установлен в false, а затем true при первом нажатии, как он будет возвращен в false и автоматически остановит запись?

3. Что вы подразумеваете под «автоматической остановкой» записи? Если вы хотите, чтобы кнопка была нажата в течение всего времени записи, ответы, добавленные ниже, верны. Лично меня раздражает удерживать кнопку во время записи, поэтому я предложил это. 🙂

Ответ №1:

Используйте GestureDetector в качестве виджета и используйте onLongPressUp и onLongPressStart соответственно

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