Flutter卡片堆叠展示插件card_stack_widget的使用
Flutter卡片堆叠展示插件card_stack_widget的使用
📦 card_stack_widget
card_stack_widget
是一个为Flutter应用提供垂直可滑动且高度可定制的卡片堆栈组件。通过这个插件,你可以创建一个具有交互性的卡片堆栈效果,使你的应用界面更加生动。
Usage 使用方法
CardStackWidget
需要一个CardModel
列表来创建卡片堆栈。你可以自定义卡片的滑动或移除方向,调整缩放比例或位置系数。此外,还可以设置拖动时改变透明度的效果。
以下是一个简单的例子,展示了如何使用CardStackWidget
和CardModel
:
import 'package:flutter/material.dart';
import 'package:card_stack_widget/card_stack_widget.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Card Stack Widget Example'),
),
body: CardStackExample(),
),
);
}
}
class CardStackExample extends StatelessWidget {
List<CardModel> _buildMockList(BuildContext context, {int size = 4}) {
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()).withOpacity(1.0);
list.add(
CardModel(
backgroundColor: color,
radius: BorderRadius.circular(8),
shadowColor: Colors.black.withOpacity(0.2),
child: SizedBox(
height: 310,
width: containerWidth,
child: Container(
decoration: BoxDecoration(
color: color,
borderRadius: BorderRadius.circular(8),
),
child: Center(
child: Text(
'Card $i',
style: TextStyle(color: Colors.white, fontSize: 24),
),
),
),
),
),
);
}
return list;
}
@override
Widget build(BuildContext context) {
final mockList = _buildMockList(context);
return CardStackWidget(
opacityChangeOnDrag: true,
swipeOrientation: CardOrientation.both,
cardDismissOrientation: CardOrientation.both,
positionFactor: 3,
scaleFactor: 1.5,
alignment: Alignment.center,
reverseOrder: true,
animateCardScale: true,
dismissedCardDuration: Duration(milliseconds: 150),
cardList: mockList,
onCardTap: (CardModel card) {
// Handle tap event
print('Card tapped');
},
);
}
}
参数说明
CardStackWidget 支持的属性
cardList
: 卡片模型列表。scaleFactor
: 缩放比例。positionFactor
: 位置系数。alignment
: 对齐方式(默认居中)。reverseOrder
: 是否反转顺序。cardDismissOrientation
: 卡片移除的方向。swipeOrientation
: 滑动方向。onCardTap
: 卡片点击事件回调。animateCardScale
: 动画缩放持续时间。dismissedCardDuration
: 卡片被移除后的动画持续时间。opacityChangeOnDrag
: 拖动时是否改变透明度。
CardModel 支持的属性
key
: 唯一标识符。shadowColor
: 阴影颜色。backgroundColor
: 背景颜色。radius
: 圆角半径。border
: 边框样式。child
: 子组件。padding
: 内边距。margin
: 外边距。gradient
: 渐变色。imageDecoration
: 图像装饰。
通过这些参数,你可以根据自己的需求定制出独特的卡片堆栈效果。希望这个示例对你有所帮助!
Preview 效果预览
以上是关于card_stack_widget
的基本介绍和使用示例,如果有任何问题或者需要更深入的帮助,请随时提问!
更多关于Flutter卡片堆叠展示插件card_stack_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter卡片堆叠展示插件card_stack_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用 card_stack_widget
插件在 Flutter 中实现卡片堆叠展示的示例代码。这个插件允许你以堆叠的方式展示卡片,并且可以很方便地添加动画效果。
首先,确保你已经在 pubspec.yaml
文件中添加了 card_stack_widget
依赖:
dependencies:
flutter:
sdk: flutter
card_stack_widget: ^x.y.z # 替换为最新版本号
然后运行 flutter pub get
来安装依赖。
接下来是一个完整的示例代码,展示如何使用 card_stack_widget
来实现卡片堆叠展示:
import 'package:flutter/material.dart';
import 'package:card_stack_widget/card_stack_widget.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Card Stack Widget Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CardStackScreen(),
);
}
}
class CardStackScreen extends StatefulWidget {
@override
_CardStackScreenState createState() => _CardStackScreenState();
}
class _CardStackScreenState extends State<CardStackScreen> {
final List<String> cardData = [
'Card 1',
'Card 2',
'Card 3',
'Card 4',
'Card 5',
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Card Stack Widget Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: CardStackWidget(
alignment: Alignment.center,
onSwipeLeft: () {
print('Card swiped left');
},
onSwipeRight: () {
print('Card swiped right');
},
onCardThrown: (index) {
print('Card $index thrown');
},
stackCards: cardData.map<Widget>((String data) {
return Card(
elevation: 4.0,
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Center(
child: Text(
data,
style: TextStyle(fontSize: 24.0),
),
),
),
);
}).toList(),
),
),
);
}
}
解释
- 依赖导入:确保在
pubspec.yaml
中添加了card_stack_widget
依赖。 - 创建主应用:
MyApp
类是应用的入口,设置了应用的主题和主页。 - 创建主页面:
CardStackScreen
是一个有状态的组件,包含卡片数据列表。 - 卡片堆叠组件:
CardStackWidget
用于展示卡片堆叠。alignment
:卡片堆叠的对齐方式。onSwipeLeft
和onSwipeRight
:左滑和右滑时的回调。onCardThrown
:卡片被抛出时的回调。stackCards
:卡片列表,每个卡片是一个Card
组件,包含文本数据。
这个示例展示了如何创建一个简单的卡片堆叠展示,并处理滑动和抛出事件。你可以根据需要进一步自定义卡片样式和动画效果。