swipable_stack
A widget for stacking cards, which users can swipe horizontally and vertically with beautiful animations like Tinder UI.
(Sorry, the package name swipable_stack is typo of swipeable stack)
Usage
builder
A SwipableStack uses a builder to display widgets.
SwipableStack( builder: (context, properties) { return Image.asset(imagePath); }, ),
onSwipeCompleted
You can get completion event with onSwipeCompleted.
SwipableStack( onSwipeCompleted: (index, direction) { print('$index, $direction'); }, )
overlayBuilder
You can show overlay on the front card with overlayBuilder.
SwipableStack( overlayBuilder: (context, properties) { final opacity = min(properties.swipeProgress, 1.0); final isRight = properties.direction == SwipeDirection.right; return Opacity( opacity: isRight ? opacity : 0, child: CardLabel.right(), ); }, )
controller
SwipableStackController allows you to control swipe action & also rewind recent action.
final controller = SwipableStackController(); SwipableStack( controller:controller, builder: (context, properties) { return Image.asset(imagePath); }, ); controller.next( swipeDirection: SwipeDirection.right, ); controller.rewind();
SwipableStackController provides to access currentIndex of SwipableStack.
final controller = SwipableStackController(); controller.addListener(() { print('${_controller.currentIndex}'); });
onWillMoveNext
You can also restrict user actions according to index or action with onWillMoveNext.
SwipableStack( onWillMoveNext: (index, direction) { final allowedActions = [ SwipeDirection.right, SwipeDirection.left, ]; return allowedActions.contains(direction); }, );
swipeAssistDuration
You can set the speed the user is able to swipe through Widgets with the swipeAssistDuration.
SwipableStack( swipeAssistDuration: Duration(milliseconds: 100), )
The default is 650ms.
stackClipBehaviour
You can set the clipBehaviour of the stack with the stackClipBehaviour.
Change it to Clip.none to exceed the boundaries of parent widget size.
SwipableStack( stackClipBehaviour: Clip.none, )
The default is Clip.hardEdge.
allowVerticalSwipe
Disable vertical swipe with allowVerticalSwipe.
Changing to false disable vertical swipe capabilities
SwipableStack( allowVerticalSwipe: false, )
The default is true.
swipeTopAnchor
Set the swipe anchor with swipeAnchor with the following enum
SwipeAnchor.top : card rotation on bottom and anchored on top
SwipeAnchor.bottom : card rotation on top and anchored on bottom
SwipableStack( swipeAnchor: SwipeAnchor.top, )
The default is SwipeAnchor.top.
