一个 Flutter 包,提供垂直堆叠的可滑动卡片,允许用户上下滑动以浏览内容。每张卡片都可以自定义独特的布局、动画和行为。非常适合用于交互式界面,如测验、产品展示或任务列表。该组件支持 Android、iOS、Web、macOS、Windows 和 Linux 等多个平台,确保在各种设备上性能一致。
适合场景
基于卡片的交互式导航
产品或商品发现界面
测验或调查应用
通过滑动手势进行任务管理
内容浏览,流畅过渡
主要特点
垂直卡片堆叠
滑动关闭手势
可自定义的卡片外观
跨平台兼容性
内置动画支持
可扩展的事件处理
适合对象
开发基于卡片的用户界面的开发者
需要滑动手势操作的应用
跨平台 Flutter 项目
交互式引导流程
动态内容展示
使用建议
需要仔细处理手势冲突
大量卡片数量时可能影响性能
自定义需要熟悉 Flutter 布局
有限的内置主题
未针对水平堆栈进行优化
依赖外部依赖项以实现高级功能
原始 README
以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。
📦 card_stack_widget
A vertical dismissible and customizable stack of cards for a Flutter application.
Usage
CardStackWidget requires a list of CardModel, in order to create a stack of cards. You can
customize their swipe or dismiss orientation, change the scale or the position factor. You can also
apply an opacity, that change on drag movement.
Below, you can find an example of the usage of CardStackWidget and CardModel:
CardStackWidget_buildCardStackWidget(BuildContext context) {
final mockList = _buildMockList(context, size: 4);
returnCardStackWidget(
opacityChangeOnDrag: true,
swipeOrientation: CardOrientation.both,
cardDismissOrientation: CardOrientation.both,
positionFactor: 3,
scaleFactor: 1.5,
alignment: Alignment.center,
reverseOrder: true,
animateCardScale: true,
dismissedCardDuration: constDuration(milliseconds: 150),
cardList: mockList,
);
}
/// Create a mock list of `CardModel` to use inside `CardStackWidget`_buildMockList(BuildContext context, {int size = 0}) {
finaldouble containerWidth = MediaQuery
.of(context)
.size
.width - 16;
var list = <CardModel>[];
for (int i = 0; i < size; i++) {
var color = Color((Random().nextDouble() * 0xFFFFFF).toInt() << 0)
.withOpacity(1.0);
list.add(
CardModel(
backgroundColor: color,
radius: 8,
shadowColor: Colors.black.withOpacity(0.2),
child: SizedBox(
height: 310,
width: containerWidth,
child: Container(), // Whatever you want
),
),
);
}
return list;
}