GestureDetector не получает события при прокрутке

У меня есть ListView, где каждый элемент имеет свое собственное событие onTap. Если я нажимаю на элемент, когда список находится в режиме ожидания (без прокрутки), все работает нормально, но если я нажимаю элемент сразу после движения прокрутки, GestureDetector ничего не получает, из-за чего приложение не отвечает пользователям, быстро перемещающимся . Есть ли способ предотвратить такое поведение?

class _ScrollClickTestPageState extends State<ScrollClickTestPage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Test"),
      ),
      body: ListView.builder(
        shrinkWrap: true,
        itemCount: 20,
        itemBuilder: (context,index) {
          return GestureDetector(
            behavior: HitTestBehavior.opaque,
            onTap: () => print("test: click detected"),
            child: Container(
              width: double.maxFinite,
              height: 200,
              color: ([...Colors.primaries]..shuffle()).first,
              child: Center(
                child: Text(
                  '$index',
                  style: Theme.of(context).textTheme.headline4,
                ),
              ),
            ),
          );
        }
      ),
    );
  }

}

person PM4    schedule 19.03.2021    source источник


Ответы (1)


Что ж, у меня есть рабочая модель для этой проблемы: попробуйте следующий код: Замените ваш onTap: () => print("test: click detected") на onTap: () => {print("test: click detected")} и бум, ваше касание Жест работает.

person Kudos    schedule 19.03.2021
comment
Это работает??? @PM4 - person Kudos; 19.03.2021
comment
Нет, я все еще получаю ту же проблему, что и код, который я изначально опубликовал. Касание принимается, если список не прокручивается, но игнорируется, если прокручивается. - person PM4; 19.03.2021
comment
Поэтому я не думаю, что это происходит обычно в любом приложении. Bcz единовременно работает только один жест. - person Kudos; 19.03.2021
comment
Вы правы, даже нативные приложения для iOS и Android ведут себя одинаково. Я полагаю, именно так работают прокручиваемые. - person PM4; 19.03.2021