Flutter水平卡片翻页插件horizontal_card_pager的使用
Flutter水平卡片翻页插件horizontal_card_pager的使用
概述
horizontal_card_pager
是一个用于创建水平方向动态且美观的卡片视图切换器的Flutter插件。它可以帮助你轻松地在应用中实现类似Dribbble艺术风格的卡片翻页效果。
预览
移动端预览
Web端预览
安装步骤
1. 添加依赖到 pubspec.yaml
dependencies:
horizontal_card_pager: ^1.1.1
2. 导入包
import 'package:horizontal_card_pager/horizontal_card_pager.dart';
import 'package:horizontal_card_pager/card_item.dart';
3. 使用 HorizontalCardPager
HorizontalCardPager(
initialPage: 2, // 默认值为2
onPageChanged: (page) => print("page : $page"),
onSelectedItem: (page) => print("selected : $page"),
items: [...], // 设置 ImageCardItem 或 IconTitleCardItem 类
);
4. 在 items
参数中添加 CardItem
对象
如果卡片内容仅包含图像,使用 ImageCardItem
类;如果卡片内容包括图标和标题,使用 IconTitleCardItem
类。
ImageCardItem
class ImageCarditem extends CardItem {
final Widget image;
ImageCarditem({this.image});
}
IconTitleCardItem
class IconTitleCardItem extends CardItem {
final IconData iconData;
final String text;
final Color selectedBgColor;
final Color noSelectedBgColor;
final Color selectedIconTextColor;
final Color noSelectedIconTextColor;
IconTitleCardItem({
this.iconData,
this.text,
this.selectedIconTextColor = Colors.white,
this.noSelectedIconTextColor = Colors.grey,
this.selectedBgColor = Colors.blue,
this.noSelectedBgColor = Colors.white});
}
如何使用
示例代码
以下是一个完整的示例,展示了如何使用 HorizontalCardPager
插件:
import 'package:flutter/material.dart';
import 'package:horizontal_card_pager/horizontal_card_pager.dart';
import 'package:horizontal_card_pager/card_item.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
List<CardItem> items = [
IconTitleCardItem(
text: "Alarm",
iconData: Icons.access_alarms,
),
IconTitleCardItem(
text: "Add",
iconData: Icons.add,
),
IconTitleCardItem(
text: "Call",
iconData: Icons.add_call,
),
IconTitleCardItem(
text: "WiFi",
iconData: Icons.wifi,
),
IconTitleCardItem(
text: "File",
iconData: Icons.attach_file,
),
IconTitleCardItem(
text: "Air Play",
iconData: Icons.airplay,
),
];
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Horizontal Card Pager Demo')),
body: Center(
child: HorizontalCardPager(
initialPage: 2,
onPageChanged: (page) => print("page : $page"),
onSelectedItem: (page) => print("selected : $page"),
items: items,
))),
);
}
}
参考
该插件的动画灵感来自于 Dribbble 上的艺术作品。
待办事项
- ✅ 附加手势检测器
- ✅ 实现回调方法
- ✅ 允许自定义卡片设计
- ✅ 图标和标题
- ✅ 仅图像
- ✅ 实现示例应用
- ✅ 发布插件
通过上述步骤和示例代码,你可以轻松地在你的Flutter应用中集成并使用 horizontal_card_pager
插件来实现漂亮的水平卡片翻页效果。
更多关于Flutter水平卡片翻页插件horizontal_card_pager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter水平卡片翻页插件horizontal_card_pager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用 horizontal_card_pager
Flutter 插件来实现水平卡片翻页效果的代码示例。这个插件允许你以水平滑动的方式展示一系列卡片。
首先,确保你已经在 pubspec.yaml
文件中添加了 horizontal_card_pager
依赖:
dependencies:
flutter:
sdk: flutter
horizontal_card_pager: ^x.y.z # 请使用最新版本号
然后,运行 flutter pub get
来获取依赖。
接下来,在你的 Dart 文件中使用 HorizontalCardPager
小部件。以下是一个完整的示例:
import 'package:flutter/material.dart';
import 'package:horizontal_card_pager/horizontal_card_pager.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Horizontal Card Pager Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final List<String> cardTitles = [
'Card 1',
'Card 2',
'Card 3',
'Card 4',
'Card 5',
];
int currentPage = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Horizontal Card Pager Demo'),
),
body: Center(
child: HorizontalCardPager(
controller: PageController(initialPage: currentPage),
itemCount: cardTitles.length,
itemBuilder: (context, index) {
return Card(
elevation: 4.0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12.0),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Center(
child: Text(
cardTitles[index],
style: TextStyle(fontSize: 24),
),
),
),
);
},
onPageChanged: (index) {
setState(() {
currentPage = index;
});
},
),
),
);
}
}
代码解释
-
依赖添加:在
pubspec.yaml
中添加horizontal_card_pager
依赖。 -
导入包:在 Dart 文件中导入
horizontal_card_pager
包。 -
数据准备:在
_MyHomePageState
类中,准备一个包含卡片标题的列表cardTitles
。 -
UI 构建:
- 使用
Scaffold
创建一个包含应用栏和主体的基本布局。 - 在
Center
小部件中放置HorizontalCardPager
。 controller
属性用于控制翻页效果,initialPage
设置初始显示的卡片。itemCount
属性指定卡片总数。itemBuilder
属性是一个函数,用于构建每个卡片的内容。这里我们为每个卡片创建了一个Card
小部件,并显示标题。onPageChanged
属性是一个回调函数,当翻页时调用,用于更新当前页面索引。
- 使用
这个示例展示了如何使用 horizontal_card_pager
插件实现一个简单的水平卡片翻页效果。你可以根据需要进一步自定义卡片样式和功能。