feat: add option to set the initial index
This commit is contained in:
parent
db500bf458
commit
3b868d1875
|
|
@ -1,8 +1,12 @@
|
||||||
|
## [3.1.0]
|
||||||
|
|
||||||
|
- Adds option to set the initial index of the swiper.
|
||||||
|
|
||||||
## [3.0.0]
|
## [3.0.0]
|
||||||
|
|
||||||
- **BREAKING CHANGES**:
|
- **BREAKING CHANGES**:
|
||||||
- Add currentIndex and previousIndex to the onSwipe callback
|
- Adds currentIndex and previousIndex to the onSwipe callback.
|
||||||
- Render the items through a builder function
|
- Renders the items through a builder function.
|
||||||
|
|
||||||
## [2.1.0]
|
## [2.1.0]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,7 @@ class Example extends StatelessWidget {
|
||||||
| ------------- |:-------------|:-----|:-----:|
|
| ------------- |:-------------|:-----|:-----:|
|
||||||
| cardBuilder | - | Widget builder for rendering cards | true
|
| cardBuilder | - | Widget builder for rendering cards | true
|
||||||
| cardsCount | - | Cards count | true
|
| cardsCount | - | Cards count | true
|
||||||
|
| initialIndex | 0 | index of the first card when the swiper is initialized | false
|
||||||
| controller | - | Trigger swipe | false
|
| controller | - | Trigger swipe | false
|
||||||
| padding | EdgeInsets.symmetric(horizontal: 20, vertical: 25) | Control swiper padding | false
|
| padding | EdgeInsets.symmetric(horizontal: 20, vertical: 25) | Control swiper padding | false
|
||||||
| duration | 200 milliseconds | The duration that every animation should last | false
|
| duration | 200 milliseconds | The duration that every animation should last | false
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@ class CardSwiper<T extends Widget> extends StatefulWidget {
|
||||||
/// cards count
|
/// cards count
|
||||||
final int cardsCount;
|
final int cardsCount;
|
||||||
|
|
||||||
|
/// index of the first card when the swiper is initialized
|
||||||
|
final int initialIndex;
|
||||||
|
|
||||||
/// controller to trigger actions
|
/// controller to trigger actions
|
||||||
final CardSwiperController? controller;
|
final CardSwiperController? controller;
|
||||||
|
|
||||||
|
|
@ -63,6 +66,7 @@ class CardSwiper<T extends Widget> extends StatefulWidget {
|
||||||
required this.cardBuilder,
|
required this.cardBuilder,
|
||||||
required this.cardsCount,
|
required this.cardsCount,
|
||||||
this.controller,
|
this.controller,
|
||||||
|
this.initialIndex = 0,
|
||||||
this.padding = const EdgeInsets.symmetric(horizontal: 20, vertical: 25),
|
this.padding = const EdgeInsets.symmetric(horizontal: 20, vertical: 25),
|
||||||
this.duration = const Duration(milliseconds: 200),
|
this.duration = const Duration(milliseconds: 200),
|
||||||
this.maxAngle = 30,
|
this.maxAngle = 30,
|
||||||
|
|
@ -97,6 +101,10 @@ class CardSwiper<T extends Widget> extends StatefulWidget {
|
||||||
numberOfCardsDisplayed >= 1 && numberOfCardsDisplayed <= cardsCount,
|
numberOfCardsDisplayed >= 1 && numberOfCardsDisplayed <= cardsCount,
|
||||||
'you must display at least one card, and no more than the length of cards parameter',
|
'you must display at least one card, and no more than the length of cards parameter',
|
||||||
),
|
),
|
||||||
|
assert(
|
||||||
|
initialIndex >= 0 && initialIndex < cardsCount,
|
||||||
|
'initialIndex must be between 0 and cardsCount',
|
||||||
|
),
|
||||||
super(key: key);
|
super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -125,7 +133,7 @@ class _CardSwiperState<T extends Widget> extends State<CardSwiper<T>>
|
||||||
|
|
||||||
double get _maxAngle => widget.maxAngle * (pi / 180);
|
double get _maxAngle => widget.maxAngle * (pi / 180);
|
||||||
|
|
||||||
int? _currentIndex = 0;
|
int? _currentIndex;
|
||||||
int? get _nextIndex => getValidIndexOffset(1);
|
int? get _nextIndex => getValidIndexOffset(1);
|
||||||
bool get _canSwipe => _currentIndex != null && !widget.isDisabled;
|
bool get _canSwipe => _currentIndex != null && !widget.isDisabled;
|
||||||
|
|
||||||
|
|
@ -133,6 +141,8 @@ class _CardSwiperState<T extends Widget> extends State<CardSwiper<T>>
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
|
_currentIndex = widget.initialIndex;
|
||||||
|
|
||||||
widget.controller?.addListener(_controllerListener);
|
widget.controller?.addListener(_controllerListener);
|
||||||
|
|
||||||
_animationController = AnimationController(
|
_animationController = AnimationController(
|
||||||
|
|
|
||||||
|
|
@ -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.
|
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
|
homepage: https://github.com/ricardodalarme/flutter_card_swiper
|
||||||
issue_tracker: https://github.com/ricardodalarme/flutter_card_swiper/issues
|
issue_tracker: https://github.com/ricardodalarme/flutter_card_swiper/issues
|
||||||
version: 3.0.0
|
version: 3.1.0
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.12.0 <3.0.0"
|
sdk: ">=2.12.0 <3.0.0"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue