Flutter卡片动画插件reveal_card的使用
Flutter卡片动画插件reveal_card的使用
Reveal Card
widget 帮助你创建一个包含标题、描述和背景图片的卡片。你还可以在卡片上添加一个按钮。卡片还包含一个反面,该反面也包含标题、描述和背景图片。卡片可以向上翻转,显示反面。
示例
入门
示例代码
import 'package:flutter/material.dart';
import 'package:reveal_card/reveal_card.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Reveal Card',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Reveal Card'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: RevealCard(
height: 350,
width: 350,
title: const Text(
'HP Laptop',
style: TextStyle(color: Colors.white, fontSize: 30),
),
revealIcon: const Icon(
Icons.more_vert,
color: Colors.white,
),
actionButton: FloatingActionButton(
backgroundColor: Colors.redAccent,
onPressed: () {},
child: const Icon(Icons.add_shopping_cart),
),
backgroundImage: const NetworkImage(
'https://images.unsplash.com/photo-1525547719571-a2d4ac8945e2?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=764&q=80'),
content: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: const [
Text('Company', style: TextStyle(color: Colors.white, fontSize: 18)),
Expanded(
child: Text(
'SAMSUNG',
style: TextStyle(color: Colors.white, fontSize: 18),
textAlign: TextAlign.right,
),
),
],
),
const SizedBox(
height: 30,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: const [
Text('Price', style: TextStyle(color: Colors.white, fontSize: 18)),
Expanded(
child: Text(
'\$ 1349',
style: TextStyle(color: Colors.white, fontSize: 18),
textAlign: TextAlign.right,
),
),
],
),
const SizedBox(
height: 30,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: const [
Text('Rating', style: TextStyle(color: Colors.white, fontSize: 18)),
Expanded(
child: Text(
'4.6',
style: TextStyle(color: Colors.white, fontSize: 18),
textAlign: TextAlign.right,
),
),
],
),
],
revealBackgroundImage: const NetworkImage(
'https://images.unsplash.com/photo-1603302576837-37561b2e2302?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1468&q=80'),
revealCloseIcon: const Icon(Icons.close, color: Colors.white),
revealTitle: const Text(
'Specifications',
style: TextStyle(fontSize: 26, color: Colors.white),
),
revealContent: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: const [
Text(
'OS',
style: TextStyle(fontSize: 18, color: Colors.white),
),
Text(
'Windows 11',
style: TextStyle(fontSize: 18, color: Colors.white),
),
],
),
const SizedBox(
height: 30,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: const [
Text(
'Hard Drive',
style: TextStyle(fontSize: 18, color: Colors.white),
),
Text(
'SSD',
style: TextStyle(fontSize: 18, color: Colors.white),
),
],
),
],
),
),
);
}
}
参数
参数 | 类型 | 必填/可选 |
---|---|---|
title | Text | 必填 |
revealIcon | Icon | 可选 |
content | List<Widget> | 必填 |
height | double | 可选(默认值:300) |
width | double | 可选(默认值:300) |
actionButton | FloatingActionButton | 可选 |
backgroundImage | ImageProvider | 可选(默认值:backgroundColor) |
opacity | double (0 - 1) | 可选(默认值:0.5) |
backgroundColor | Color | 可选(默认值:白色) |
revealTitle | Text | 可选 |
revealCloseIcon | Icon | 可选 |
revealContent | List<Widget> | 可选 |
revealBackgroundColor | Color | 可选(默认值:白色) |
revealBackgroundImage | ImageProvider | 可选(默认值:revealBackgroundColor) |
revealOpacity | double (0 - 1) | 可选(默认值:0.5) |
revealDuration | Duration | 可选(默认值:200毫秒) |
额外信息
- 正面:标题、内容、翻转按钮、操作按钮、背景图片。
- 反面:标题、内容、关闭按钮、背景图片。
- 操作按钮:定义用户点击时执行的功能。
点击翻转按钮时,反面将以从底部向上的动画方式显示。
注意事项
根据内容调整卡片的高度和宽度。否则,内容可能会溢出。
更多关于Flutter卡片动画插件reveal_card的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter卡片动画插件reveal_card的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,我可以为你提供一个关于如何在Flutter中使用reveal_card
插件来实现卡片动画的示例代码。reveal_card
是一个流行的Flutter插件,用于创建揭示卡片效果的动画。
首先,你需要在你的pubspec.yaml
文件中添加reveal_card
依赖项:
dependencies:
flutter:
sdk: flutter
reveal_card: ^latest_version # 请替换为最新的版本号
然后,运行flutter pub get
来安装依赖项。
接下来,你可以在你的Flutter应用中使用RevealCard
组件。以下是一个简单的示例,展示如何在点击按钮时显示和隐藏卡片动画:
import 'package:flutter/material.dart';
import 'package:reveal_card/reveal_card.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Reveal Card Animation'),
),
body: Center(
child: MyHomePage(),
),
),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
bool isCardRevealed = false;
void toggleCardReveal() {
setState(() {
isCardRevealed = !isCardRevealed;
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: toggleCardReveal,
child: Text('Toggle Card'),
),
SizedBox(height: 20),
AnimatedRevealCard(
isVisible: isCardRevealed,
effect: RevealEffect.from(
start: Offset(0, -1),
end: Offset(0, 0),
borderRadius: BorderRadius.circular(16),
curve: Curves.easeInOutQuad,
duration: Duration(milliseconds: 500),
),
child: Card(
elevation: 8,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'This is a reveal card!',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 10),
Text(
'Click the button to toggle the reveal effect.',
style: TextStyle(fontSize: 16),
),
],
),
),
),
),
],
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,包含一个按钮和一个AnimatedRevealCard
组件。点击按钮会调用toggleCardReveal
方法,该方法会切换isCardRevealed
状态。AnimatedRevealCard
组件根据isCardRevealed
状态显示或隐藏卡片,并应用一个从顶部向下的揭示动画效果。
请注意,你需要确保reveal_card
插件的最新版本号已经正确填入pubspec.yaml
文件中,并且已经成功安装了依赖项。
希望这个示例能够帮助你理解如何在Flutter中使用reveal_card
插件来实现卡片动画效果。