У меня есть 1 детектор жестов, который упаковывает 10 разных карточек и позволяет их пролистывать. На каждой карте есть 3 детектора жестов (в основном кнопки). Смахивание работает, как ожидалось, но первые 6 карточек не запускают действие касания при касании (Gesture Arena сообщает мне, что горизонтальное перетаскивание борется с вертикальным перетаскиванием -> поэтому жест касания воспринимается как вертикальное перетаскивание).
Мне кажется странным, что последние 4 карты срабатывают при нажатии, а смахивание работает идеально
Я пробовал изменить GestureDetectors на InkWell, но не вышло.
@override
Widget build(BuildContext context) {
return GestureDetector(
onHorizontalDragStart: _onHorizontalDragStart,
onHorizontalDragUpdate: _onHorizontalDragUpdate,
onHorizontalDragEnd: _onHorizontalDragEnd,
behavior: HitTestBehavior.translucent,
child: Stack(
children: _buildCards(),
),
);
}
List<Widget> _buildCards() {
return [
_buildCard(0, 10, scrollPercent),
_buildCard(1, 10, scrollPercent),
_buildCard(2, 10, scrollPercent),
_buildCard(3, 10, scrollPercent),
_buildCard(4, 10, scrollPercent),
_buildCard(5, 10, scrollPercent),
_buildCard(6, 10, scrollPercent),
_buildCard(7, 10, scrollPercent),
_buildCard(8, 10, scrollPercent),
_buildCard(9, 10, scrollPercent),
];
}
Widget _buildCard(int cardIndex, int cardCount, double scrollPercent) {
final cardScrollPercent = scrollPercent / (1 / cardCount);
final parallax = scrollPercent - (cardIndex / cardCount);
return FractionalTranslation(
translation: Offset(cardIndex - cardScrollPercent, 0.0),
child: Transform(
transform: _buildCardProjection(cardScrollPercent - cardIndex),
child: card1(parallax, cardIndex
),
)
);
}
Card1 апеллируется последней, и она представляет собой саму карту. Вот код свойства onTap GestureDetector для Card1
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) => CustomDialog(
title: "Title",
description:"Test",
buttonText: "Okay",
),
); },