diff --git a/CHANGELOG.md b/CHANGELOG.md index ed82236..32e05a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## [7.1.0] + +- Adds support for tapping a card + - `onTap` callback containing currentIndex. + ## [7.0.2] - Added `CardAnimation.animateToAngle` helper to animate swipe the card to any given angle between 0-360°. diff --git a/lib/src/typedefs.dart b/lib/src/typedefs.dart index d7c19d2..569c761 100644 --- a/lib/src/typedefs.dart +++ b/lib/src/typedefs.dart @@ -35,3 +35,5 @@ typedef CardSwiperOnUndo = bool Function( int currentIndex, CardSwiperDirection direction, ); + +typedef CardSwiperOnTap = FutureOr Function(int currentIndex); diff --git a/lib/src/widget/card_swiper.dart b/lib/src/widget/card_swiper.dart index 094e246..84b13fc 100644 --- a/lib/src/widget/card_swiper.dart +++ b/lib/src/widget/card_swiper.dart @@ -88,6 +88,9 @@ class CardSwiper extends StatefulWidget { /// Callback function that is called when the swiper is disabled. final CardSwiperOnTapDisabled? onTapDisabled; + /// Callback function that is called when the card is tapped (will not trigger from swipe movement) + final CardSwiperOnTap? onTap; + /// Defined the directions in which the card is allowed to be swiped. /// Defaults to [AllowedSwipeDirection.all] final AllowedSwipeDirection allowedSwipeDirection; @@ -134,6 +137,7 @@ class CardSwiper extends StatefulWidget { this.scale = 0.9, this.isDisabled = false, this.onTapDisabled, + this.onTap, this.onSwipe, this.onEnd, this.onSwipeDirectionChange, diff --git a/lib/src/widget/card_swiper_state.dart b/lib/src/widget/card_swiper_state.dart index 6a38caf..e6fa395 100644 --- a/lib/src/widget/card_swiper_state.dart +++ b/lib/src/widget/card_swiper_state.dart @@ -116,6 +116,7 @@ class _CardSwiperState extends State if (widget.isDisabled) { await widget.onTapDisabled?.call(); } + await widget.onTap?.call(_currentIndex!); }, onPanStart: (tapInfo) { if (!widget.isDisabled) { diff --git a/pubspec.yaml b/pubspec.yaml index 5044c54..31aba72 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: flutter_card_swiper description: This is a Tinder-like card swiper package. It allows you to swipe left, right, up, and down and define your own business logic for each direction. homepage: https://github.com/ricardodalarme/flutter_card_swiper issue_tracker: https://github.com/ricardodalarme/flutter_card_swiper/issues -version: 7.0.2 +version: 7.1.0 environment: sdk: ">=3.0.0 <4.0.0" diff --git a/test/card_swiper_test.dart b/test/card_swiper_test.dart index bf89d3f..934ac22 100644 --- a/test/card_swiper_test.dart +++ b/test/card_swiper_test.dart @@ -634,5 +634,29 @@ void main() { expect(find.card(0), findsOneWidget); }); + + testWidgets('when tapping a card, expect callback', (WidgetTester tester) async { + final swiperKey = GlobalKey(); + var index = -1; + + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 3, + numberOfCardsDisplayed: 1, + initialIndex: 2, + onTap: (currentIndex) { + index = currentIndex; + }, + cardBuilder: genericBuilder, + ), + ); + + await tester.tap(find.byKey(swiperKey)); + await tester.pumpAndSettle(); + + expect(index, 2); + }); + }); }