搜索插件、代码仓与 APP 分类

card_stack_widget 封面
插件详情v0.1.6

card_stack_widget

一个垂直的可滑动关闭且可自定义的卡片堆栈,适用于 Flutter 应用程序

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
286
喜欢数
88
Pub 分数
160

安装插件

flutter pub add card_stack_widget

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 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);

  return CardStackWidget(
    opacityChangeOnDrag: true,
    swipeOrientation: CardOrientation.both,
    cardDismissOrientation: CardOrientation.both,
    positionFactor: 3,
    scaleFactor: 1.5,
    alignment: Alignment.center,
    reverseOrder: true,
    animateCardScale: true,
    dismissedCardDuration: const Duration(milliseconds: 150),
    cardList: mockList,
  );
}

/// Create a mock list of `CardModel` to use inside `CardStackWidget`
_buildMockList(BuildContext context, {int size = 0}) {
  final double 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;
}

Preview

GIF example card widget 1 GIF example card widget 2

🚀 Supported properties

CardStackWidget:

  • cardList: List
  • scaleFactor: double
  • positionFactor: double
  • alignment: Alignment?
  • reverseOrder: bool
  • cardDismissOrientation: CardOrientation
  • swipeOrientation: CardOrientation
  • onCardTap: Function(CardModel)?
  • animateCardScale: Duration
  • dismissedCardDuration: bool
  • opacityChangeOnDrag: bool

CardModel:

  • key: Key?
  • shadowColor: Color
  • backgroundColor: Color
  • radius: Radius
  • border: BoxBorder?
  • child: Widget?
  • padding: EdgeInsets?
  • margin: EdgeInsets?
  • gradient: Gradient?
  • imageDecoration: DecorationImage?

所属分类

源码仓库

使用此插件的项目

暂无相关数据。