v1.0.3
infinite_cards
Flutter용 무한 카드 전환 UI, 사용자 정의 애니메이션 지원
31좋아요 1230일 다운로드40Pub 점수
플랫폼 정보 없음
Flutter용 무한 카드 전환 UI, 사용자 정의 애니메이션 지원
{"sdk":"flutter"}^0.1.2{"sdk":"flutter"}아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
An infinite card switching UI for Flutter, support custom animation 可自定义动效的卡片切换视图(中文文档)
https://github.com/BakerJQ/Android-InfiniteCards
https://github.com/BakerJQ/Flutter-InfiniteCards/tree/web
| Android | iOS |
|---|---|
| https://raw.githubusercontent.com/BakerJQ/Flutter-InfiniteCards/master/screenshot/android.gif | https://raw.githubusercontent.com/BakerJQ/Flutter-InfiniteCards/master/screenshot/ios.gif |
cd ./example
flutter create .
flutter run
dependencies:
infinite_cards: ^1.0.3
@override
void initState() {
super.initState();
_controller = InfiniteCardsController(
itemBuilder: _renderItem,
itemCount: 5,
animType: AnimType.SWITCH,
);
}
InfiniteCards(
controller: _controller,
)
_controller.previous();
_controller.next();
_controller.reset(...);
If you just use all default animations, just do nothing.
InfiniteCardsController(
...
transformToFront: yourCustomTransformToFront,
transformToBack: yourCustomTransformToBack,
curve: yourCustomCurve
...
)
One example of implement Transform
Transform _defaultCommonTransform(Widget item,
double fraction, double curveFraction, double cardHeight, double cardWidth, int fromPosition, int toPosition)
{
//Count of card which needs to move over
int positionCount = fromPosition - toPosition;
//0.8 scale for the first card, and -0.1 per card behind
//(0.8 - 0.1 * fromPosition) = current specific card scale
//(0.1 * fraction * positionCount) = scale while moving
double scale = (0.8 - 0.1 * fromPosition) + (0.1 * fraction * positionCount);
//translate -0.02 * cardHeight per card behind
//-cardHeight * (0.8 - scale) * 0.5 to center the card
double translationY = -cardHeight * (0.8 - scale) * 0.5 -
cardHeight * (0.02 * fromPosition - 0.02 * fraction * positionCount);
//return the Widget after scale and translate
return Transform.translate(
offset: Offset(0, translationY),
child: Transform.scale(
scale: scale,
child: item,
),
);
}
InfiniteCards is released under the Apache 2.0 license.
Copyright 2019 BakerJ.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at following link.
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.