flutter_card_swiper 7.2.0

SDKflutter
Platformandroidioswindowslinuxmacosweb

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.

flutter_card_swiper

Pub Version Pub Points Pub Likes Pub popularity Tests codecov

This is a Flutter package for a Tinder-like card swiper. ✨

It allows you to swipe left, right, up, and down and define your own business logic for each direction.

Very smooth animations supporting Android, iOS, Web & Desktop.

Why?

We built this package because we wanted to:

  • Have a fully customizable slider
  • Swipe in any direction
  • Undo swipes as many times as you want
  • Choose your own settings such as duration, angle, padding and more
  • Trigger swipes in any direction with the controller
  • Add callbacks while swiping, on end, or when the swiper is disabled
  • Detect the direction (left, right, top, bottom) the card was swiped

Show Cases

Swipe in any directionTrigger swipesUnswipe the cards
Fully customizable

Installation

Add this to your package's pubspec.yaml file:

card_swiper: ...

OR run

flutter pub add flutter_card_swiper

in your project's root directory.

Usage

You can place your CardSwiper inside of a Scaffold like we did here. Optional parameters can be defined to enable different features. See the following example:

import 'package:flutter_card_swiper/flutter_card_swiper.dart';
import 'package:flutter/material.dart';

class Example extends StatelessWidget {
  List<Container> cards = [
    Container(
      alignment: Alignment.center,
      child: const Text('1'),
      color: Colors.blue,
    ),
    Container(
      alignment: Alignment.center,
      child: const Text('2'),
      color: Colors.red,
    ),
    Container(
      alignment: Alignment.center,
      child: const Text('3'),
      color: Colors.purple,
    )
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Flexible(
        child: CardSwiper(
          cardsCount: cards.length,
          cardBuilder: (context, index, percentThresholdX, percentThresholdY) => cards[index],
        ),
      ),
    );
  }
}

Constructor

Basic

ParameterDefaultDescriptionRequired
cardBuilder-Widget builder for rendering cardstrue
cardsCount-Number of cardstrue
controller-Controller to trigger swipe actionsfalse
duration200 millisecondsThe duration that every animation should lastfalse
initialIndex0Index of the first card when the swiper is initializedfalse
isDisabledfalseSet to true if swiping should be disabled, has no impact when triggered from the outsidefalse
isLooptrueSet to true if the stack should loopfalse
maxAngle30Maximum angle that the card can reach during swipingfalse
allowedSwipeDirectionAllowedSwipeDirection.allSets the direction in which the card can be swiped. It can be set to any combination of left, right up or down.false
numberOfCardsDisplayed2Number of cards displayed at the same timefalse
onEnd-Callback when there are no more cards left to swipefalse
onSwipe-Callback when the user swipes a card. If the function returns false, the swipe action is canceled. If it returns true, the swipe action is performed as expectedfalse
onTapDisabled-Callback when a card is tapped and isDisabled is truefalse
onUndo-Callback when the controller calls undo. If the function returns false, the undo action is canceled. If it returns true, the undo action is performed as expectedfalse
paddingEdgeInsets.symmetric(horizontal: 20, vertical: 25)The padding around the swiperfalse
scale0.9Scale of the card that is behind the front cardfalse
threshold50Threshold from which the card is swiped awayfalse
onSwipeDirectionChange-A callback containing the horizontal and vertical swipe directionfalse
showBackCardOnUndo-If true, the previous card will be shown in the background when swiping, and the swipe action will trigger an undofalse
undoSwipeThreshold50The horizontal swipe distance threshold, in pixels, after which the back card switches to the previous card. Only active when showBackCardOnUndo is truefalse
undoDirectionUndoDirection.leftThe direction of the swipe to trigger an undofalse

Controller

The Controller is used to swipe the card from outside of the widget. You can create a controller called CardSwiperController and save the instance for further usage. Please have a closer look at our Example for the usage.

MethodDescription
swipeSwipes the card to a specific direction.
undoBring back the last card that was swiped away.
moveToChange the top card to a specific index.

Credits

  • Ricardo Dalarme (Package maintainer)
  • Appinio GmbH (Original project creator)