Flutter水平卡片翻页插件horizontal_card_pager的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter水平卡片翻页插件horizontal_card_pager的使用

概述

horizontal_card_pager 是一个用于创建水平方向动态且美观的卡片视图切换器的Flutter插件。它可以帮助你轻松地在应用中实现类似Dribbble艺术风格的卡片翻页效果。

预览

移动端预览

Mobile Preview Mobile Preview Mobile Preview

Web端预览

Web Preview

安装步骤

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

1 回复

更多关于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;
            });
          },
        ),
      ),
    );
  }
}

代码解释

  1. 依赖添加:在 pubspec.yaml 中添加 horizontal_card_pager 依赖。

  2. 导入包:在 Dart 文件中导入 horizontal_card_pager 包。

  3. 数据准备:在 _MyHomePageState 类中,准备一个包含卡片标题的列表 cardTitles

  4. UI 构建

    • 使用 Scaffold 创建一个包含应用栏和主体的基本布局。
    • Center 小部件中放置 HorizontalCardPager
    • controller 属性用于控制翻页效果,initialPage 设置初始显示的卡片。
    • itemCount 属性指定卡片总数。
    • itemBuilder 属性是一个函数,用于构建每个卡片的内容。这里我们为每个卡片创建了一个 Card 小部件,并显示标题。
    • onPageChanged 属性是一个回调函数,当翻页时调用,用于更新当前页面索引。

这个示例展示了如何使用 horizontal_card_pager 插件实现一个简单的水平卡片翻页效果。你可以根据需要进一步自定义卡片样式和功能。

回到顶部