#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"),
);