#flutter #gesturedetector
#flutter #gesturedetector
Вопрос:
Я использую GestureDetector
как:
GestureDetector(
onTapDown: (_) => store.startRecording(),
onTapUp: (_) => store.stopRecording(),
child: ...
Однако я заметил, что onTapUp
иногда это не вызывается (например, когда я перетаскиваю палец и отпускаю его после этого).
Какой обратный вызов будет вызываться всегда, когда мой палец отпущен?
Комментарии:
1. пробовал
onTapCancel
? в документах говорится: «Указатель, который ранее запускал onTapDown, в конечном итоге не вызовет отвод. Это вызывается после onTapDown и вместо onTapUp и onTap, если жест касания не выиграл.»2. @pskink спасибо!
onTapCancel
похоже, что это работает для крайних случаев, мне все еще нужно продолжатьonTapUp
обрабатывать все ситуации.
Ответ №1:
Благодаря @pskink мое решение выглядит так:
GestureDetector(
onTapDown: (_) => store.startRecording(),
onTapUp: (_) => store.stopRecording(),
onTapCancel: () => store.stopRecording(),
onTapCanncel
будет обрабатывать ситуацию, когда пользователь перетаскивает палец и отпускает.
Комментарии:
1. кто-то использует Mac, lol
2. Но таким образом
store.stopRecording()
сценарий вызывается, даже если пользователь просто проводит пальцем по кнопке, например, даже небольшое движение пальца вызовет это. Вы когда-нибудь сталкивались с этой проблемой или, может быть, нашли лучшее решение?