Эффект InkWell начинается с задержкой при использовании onDoubleTap; хочу вызвать это, как только виджет коснется - PullRequest
1 голос
/ 15 апреля 2020

Если вы используете onTap & onDoubleTap рядом с InkWell, то задержка одного нажатия задерживается (300 мс). Я знаю, что требуется время для распознавания двойного касания, но эффект задерживается, и это плохое чувство взаимодействия с пользователем.

Что я пробовал: Я узнал, что эффект InkWell запускается сразу после вызова любого обратного вызова. Если я использую только onTap, обратный вызов и эффект запускаются мгновенно при первом касании; если я использую onTap и onDoubleTap, эффект задерживается.

Я также пытался использовать onTapDown, но это также задерживается (возможная ошибка?)

child: InkWell(
  onTap: () { print("Tap"); },                // gets delayed 300ms
  onDoubleTap: () { print("Double Tap"); }, 
  onTapDown: (x) { print("Tap Down"); }       // gets delayed 300ms
}

Итак, мой вопрос: Можно ли в любом случае изменить InkWell (GestureDetector) для немедленного запуска эффекта. Я думаю, что решение может быть, чтобы изменить поведение onTapDown; это должно быть вызвано немедленно, если пользователь касается виджета.

1 Ответ

0 голосов
/ 18 апреля 2020

Я нашел простое решение . Я использую только onTap функцию InkWell и сам написал алгоритм onDoubleTap. Таким образом, эффект spla sh запускается немедленно, потому что оригинальный onDoubleTap не используется. Сама функция нажатия задерживается (как и при использовании оригинальной функции onDoubleTap).

пакет Pup.dev Я написал пакет pub.dev под названием InkWellSplash. В дополнение к функции spla sh, теперь вы можете настроить максимальное время между двумя касаниями, чтобы распознать двойное касание.

Я уверен, что этот пакет пригодится и будет полезен для нескольких разработчиков

Ссылки

Pub.dev - InklWellSpla sh

GitHub - InkWellSpla sh

Интерактивный пример

...