Flutter悬浮卡片效果插件hover_card的使用

Flutter悬浮卡片效果插件hover_card的使用

特性

悬浮卡片效果

开始使用

要开始使用此包,请确保已将其添加到您的 pubspec.yaml 文件中:

dependencies:
  hover_card: ^版本号

然后运行 flutter pub get

使用方法

以下是一个简单的示例,展示了如何在应用中使用 hover_card 插件:

import 'package:flutter/material.dart';
import 'package:hover_card/hover_card.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hover - Tilt 3D 效果',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: Material(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              'Hover - Tilt 3D 效果.\n   Instagram : xr_yr',
              style: TextStyle(
                  fontSize: 30,
                  fontWeight: FontWeight.w700,
                  color: Colors.black,
                  letterSpacing: 2),
            ),
            const SizedBox(height: 50),
            // 悬浮卡片
            SizedBox(
              width: 150,
              height: 300,
              child: HoverCard(
                // 构建卡片内容
                builder: (context, hovering) {
                  return Container(
                    color: const Color(0xFFE9E9E9),
                    child: const Center(
                      child: FlutterLogo(size: 100),
                    ),
                  );
                },
                // 深度
                depth: 10,
                // 深度颜色
                depthColor: Colors.grey[500],
                // 点击事件
                onTap: () => print('Hello, World!'),
                // 阴影
                shadow: BoxShadow(
                  color: Colors.purple[100] as Color,
                  blurRadius: 30,
                  spreadRadius: -20,
                  offset: const Offset(0, 40),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 导入必要的包

    import 'package:flutter/material.dart';
    import 'package:hover_card/hover_card.dart';
    
  2. 创建主应用类

    void main() {
      runApp(MyApp());
    }
    
  3. 构建应用界面

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Hover - Tilt 3D 效果',
          theme: ThemeData(
            primarySwatch: Colors.blue,
            visualDensity: VisualDensity.adaptivePlatformDensity,
          ),
          home: Material(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                const Text(
                  'Hover - Tilt 3D 效果.\n   Instagram : xr_yr',
                  style: TextStyle(
                      fontSize: 30,
                      fontWeight: FontWeight.w700,
                      color: Colors.black,
                      letterSpacing: 2),
                ),
                const SizedBox(height: 50),
                // 悬浮卡片
                SizedBox(
                  width: 150,
                  height: 300,
                  child: HoverCard(
                    // 构建卡片内容
                    builder: (context, hovering) {
                      return Container(
                        color: const Color(0xFFE9E9E9),
                        child: const Center(
                          child: FlutterLogo(size: 100),
                        ),
                      );
                    },
                    // 深度
                    depth: 10,
                    // 深度颜色
                    depthColor: Colors.grey[500],
                    // 点击事件
                    onTap: () => print('Hello, World!'),
                    // 阴影
                    shadow: BoxShadow(
                      color: Colors.purple[100] as Color,
                      blurRadius: 30,
                      spreadRadius: -20,
                      offset: const Offset(0, 40),
                    ),
                  ),
                ),
              ],
            ),
          ),
        );
      }
    }
    

更多关于Flutter悬浮卡片效果插件hover_card的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter悬浮卡片效果插件hover_card的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用hover_card插件来实现悬浮卡片效果的代码案例。hover_card插件允许你创建当用户悬停在某个组件上时显示的卡片效果。

首先,你需要在你的pubspec.yaml文件中添加hover_card依赖:

dependencies:
  flutter:
    sdk: flutter
  hover_card: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter项目中实现悬浮卡片效果。以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:hover_card/hover_card.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hover Card Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Hover Card Demo'),
        ),
        body: Center(
          child: HoverCard(
            builder: (context, hoverState) {
              return Container(
                width: 200,
                height: 200,
                color: hoverState.isHovered ? Colors.blue.withOpacity(0.5) : Colors.grey,
                child: Center(
                  child: Text(
                    'Hover over me!',
                    style: TextStyle(color: Colors.white),
                  ),
                ),
              );
            },
            child: Container(
              width: 100,
              height: 100,
              color: Colors.red,
              child: Center(
                child: Text(
                  '+',
                  style: TextStyle(color: Colors.white, fontSize: 36),
                ),
              ),
            ),
            cardMargin: EdgeInsets.all(10),
            cardElevation: 8,
            cardShape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(16),
            ),
            hoverElevation: 16,
            hoverShape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(16),
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个使用HoverCard组件的页面。HoverCard组件包含两个主要部分:

  1. child:这是当未悬停时的显示内容,在这个例子中是一个红色的加号。
  2. builder:这是一个函数,它接收一个BuildContext和一个HoverState对象。HoverState对象包含一个isHovered属性,表示当前是否处于悬停状态。根据这个状态,你可以返回不同的Widget来显示悬停时的效果。在这个例子中,当悬停时,卡片会变成半透明的蓝色。

此外,你还可以自定义卡片的一些属性,比如cardMargin(卡片的外边距)、cardElevation(卡片的阴影)、cardShape(卡片的形状)、hoverElevation(悬停时的阴影)和hoverShape(悬停时的形状)。

这个示例展示了如何使用hover_card插件来创建一个简单的悬浮卡片效果。你可以根据需要进一步自定义和扩展这个效果。

回到顶部