Flutter滑动卡片效果插件flutter_slimy_card的使用
Flutter滑动卡片效果插件flutter_slimy_card的使用
SlimyCard 提供了一种类似于果冻的动画效果,将一个卡片拆分成顶部和底部两个不同的卡片。可以在这两个独立的卡片中放置任何自定义的小部件。
如何安装这个包
-
依赖它 在你的项目的
pubspec.yaml
文件中添加以下内容:dependencies: flutter_slimy_card: ^1.0.2
-
安装它 可以通过命令行使用 Flutter 安装包:
$ flutter pub get
如何使用这个包
-
导入这个包
在你的 Dart 代码中可以这样使用:
import 'package:flutter_slimy_card/flutter_slimy_card.dart';
-
使用这个包
基本用法
ListView(
children: <Widget>[
FlutterSlimyCard()
]
);
自定义用法示例
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: <Widget>[
FlutterSlimyCard(
topCardHeight: 160,
bottomCardHeight: 120,
topCardWidget: topWidget(),
bottomCardWidget: bottomWidget(),
),
],
));
}
// 顶部卡片内容
Widget topWidget() {
return Container(
child: SafeArea(
child: Column(
children: [
Container(height: 75, child: Image(image: AssetImage('assets/run_horse.png'))), // 显示一张名为 run_horse.png 的图片
SizedBox(
height: 5,
),
Text(
'A Horse', // 文字内容
style: TextStyle(color: Colors.white, fontSize: 18),
),
SizedBox(
height: 5,
),
],
),
),
);
}
// 底部卡片内容
Widget bottomWidget() {
return Container(
margin: EdgeInsets.only(top: 5),
child: Column(
children: [
SizedBox(height: 10),
Flexible(
child: Text(
'A horse is a large animal which people can ride. Some horses are used for pulling ploughs and carts. Say Hello to a Funny Hourse.', // 文字内容
style: TextStyle(color: Colors.white),
))
],
),
);
}
}
更多关于Flutter滑动卡片效果插件flutter_slimy_card的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter滑动卡片效果插件flutter_slimy_card的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用flutter_slimy_card
插件来实现滑动卡片效果的代码示例。flutter_slimy_card
插件允许你创建一个类似Tinder的卡片滑动效果。
首先,确保你的Flutter项目中已经添加了flutter_slimy_card
依赖。你可以在pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
flutter_slimy_card: ^x.y.z # 请将x.y.z替换为最新版本号
然后运行flutter pub get
来获取依赖。
接下来是一个完整的示例代码,展示了如何使用flutter_slimy_card
:
import 'package:flutter/material.dart';
import 'package:flutter_slimy_card/flutter_slimy_card.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Slimy Card Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SlimeCardDemo(),
);
}
}
class SlimeCardDemo extends StatefulWidget {
@override
_SlimeCardDemoState createState() => _SlimeCardDemoState();
}
class _SlimeCardDemoState extends State<SlimeCardDemo> with SingleTickerProviderStateMixin {
final List<String> images = [
'https://via.placeholder.com/350x150?text=Card+1',
'https://via.placeholder.com/350x150?text=Card+2',
'https://via.placeholder.com/350x150?text=Card+3',
// 添加更多图片URL
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Slime Card Demo'),
),
body: Center(
child: SlimeCard(
cardList: images.map((image) => CardData(
image: NetworkImage(image),
onSwipeLeft: () {
print('Card $image swiped left');
},
onSwipeRight: () {
print('Card $image swiped right');
},
)).toList(),
cardWidth: 300,
cardHeight: 150,
cardRadius: 16,
overlayColor: Colors.black.withOpacity(0.3),
cardMargin: 8,
animationDuration: Duration(milliseconds: 300),
onCardDisappear: (index) {
print('Card $index disappeared');
},
),
),
);
}
}
class CardData {
final ImageProvider image;
final VoidCallback onSwipeLeft;
final VoidCallback onSwipeRight;
CardData({required this.image, required this.onSwipeLeft, required this.onSwipeRight});
}
代码解释:
-
依赖引入:确保在
pubspec.yaml
文件中添加了flutter_slimy_card
依赖。 -
主应用入口:
MyApp
是一个简单的MaterialApp
,它定义了应用的主题和主页。 -
主页:
SlimeCardDemo
是一个有状态的组件,它包含了一个卡片列表和必要的构建逻辑。 -
卡片数据:
CardData
类用于存储每张卡片的数据,包括图片URL和左右滑动的回调。 -
卡片组件:
SlimeCard
组件接收一个CardData
对象的列表,并处理卡片的显示和滑动逻辑。 -
回调处理:在卡片被左右滑动时,会调用相应的回调函数,打印出滑动信息。
-
布局和样式:通过
cardWidth
、cardHeight
、cardRadius
等参数调整卡片的布局和样式。
你可以根据需求进一步自定义卡片的内容和样式。希望这个示例对你有所帮助!