Flutter动画勾选标记插件animated_checkmark的使用
Flutter动画勾选标记插件animated_checkmark的使用
描述
animated_checkmark
是一个Flutter插件,它提供了一种简单的方法来显示、动画化和设置复选标记的样式。你可以通过一个布尔值或双精度浮点数值来控制动画的检查/未检查/不确定状态,并且可以动画化颜色、粗细和大小。此外,你还可以选择绘制交叉线(对于假值)或者不绘制破折号(对于不确定值),并且可以选择线条是圆滑还是尖锐。
预览
功能特性
- 通过布尔值或双精度浮点数值来动画化检查/未检查/不确定状态。
- 可以动画化颜色、粗细和大小。
- 支持圆滑或尖锐的线条样式。
- 可选择绘制交叉线用于假值。
- 可选择不绘制破折号用于不确定值。
使用方法
添加依赖
在pubspec.yaml
文件中添加依赖:
dependencies:
animated_checkmark: ^latest_version # 请替换为最新版本号
然后执行flutter pub get
来安装这个包。
示例代码
以下是一个完整的示例,展示了如何使用animated_checkmark
创建一个可交互的复选标记界面。
import 'package:flutter/material.dart';
import 'package:animated_checkmark/animated_checkmark.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Animated Checkmark Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
double _size = 50;
bool _checked = true;
bool _indeterminate = false;
bool _rounded = false;
bool _drawCross = false;
bool _drawDash = true;
Color? _color;
void setChecked(bool value) {
setState(() {
_checked = value;
_indeterminate = false;
});
}
void setIndeterminate() {
setState(() => _indeterminate = true);
}
void setRounded(bool value) {
setState(() => _rounded = value);
}
void setDrawCross(bool value) {
setState(() => _drawCross = value);
}
void setDrawDash(bool value) {
setState(() => _drawDash = value);
}
void setColor(Color color) {
setState(() => _color = color);
}
void setSize(double size) {
setState(() => _size = size);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ColoredBox(
color: Colors.yellow.shade100,
child: Checkmark(
duration: const Duration(milliseconds: 250),
curve: Curves.linear,
checked: _checked,
indeterminate: _indeterminate,
size: _size,
color: _color,
rounded: _rounded,
drawCross: _drawCross,
drawDash: _drawDash,
),
),
const SizedBox(height: 20),
SizedBox(
width: 250,
child: Slider(
value: _size,
max: 200,
min: 10,
label: _size.round().toString(),
onChanged: setSize,
),
),
const SizedBox(height: 20),
Wrap(
spacing: 10,
children: [
OutlinedButton(
onPressed: () => setChecked(true),
child: const Text('CHECK'),
),
OutlinedButton(
onPressed: () => setChecked(false),
child: const Text('UNCHECK'),
),
OutlinedButton(
onPressed: () => setIndeterminate(),
child: const Text('INDETERMINATE'),
),
],
),
const SizedBox(height: 10),
Wrap(
spacing: 10,
children: [
OutlinedButton(
onPressed: () => setDrawCross(!_drawCross),
child: const Text('DRAW CROSS'),
),
OutlinedButton(
onPressed: () => setDrawDash(!_drawDash),
child: const Text('DRAW DASH'),
),
],
),
const SizedBox(height: 10),
Wrap(
spacing: 10,
children: [
OutlinedButton(
onPressed: () => setRounded(true),
child: const Text('ROUNDED'),
),
OutlinedButton(
onPressed: () => setRounded(false),
child: const Text('SHARPEN'),
),
],
),
const SizedBox(height: 20),
Container(
width: 200,
alignment: Alignment.center,
child: GridView.builder(
shrinkWrap: true,
itemCount: Colors.primaries.length,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
mainAxisSpacing: 2,
crossAxisSpacing: 2,
crossAxisCount: 6,
),
itemBuilder: (_, i) {
final color = Colors.primaries[i];
return Card(
color: color,
clipBehavior: Clip.antiAlias,
child: InkWell(
onTap: () => setColor(color),
child: Checkmark(
weight: 4,
color: Colors.white70,
checked: _color == color,
),
),
);
},
),
),
],
),
),
),
);
}
}
在这个示例中,我们创建了一个包含多个按钮和滑块的页面,用户可以通过点击按钮改变复选标记的状态(检查、未检查、不确定),调整其大小、是否绘制交叉线、是否绘制破折号、线条样式(圆滑或尖锐)以及颜色。
赞助
如果你觉得这个插件对你有帮助,欢迎赞助作者以支持他的工作:
希望上述内容能帮助你更好地理解和使用animated_checkmark
插件。如果有任何问题,欢迎随时提问!
更多关于Flutter动画勾选标记插件animated_checkmark的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter动画勾选标记插件animated_checkmark的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter中使用animated_checkmark
插件来实现动画勾选标记的示例代码。这个插件可以帮助你在应用中添加具有动画效果的勾选标记。
首先,你需要在你的pubspec.yaml
文件中添加依赖项:
dependencies:
flutter:
sdk: flutter
animated_checkmark: ^1.0.4 # 请检查最新版本号
然后,运行flutter pub get
来安装依赖项。
接下来,在你的Flutter项目中,你可以按照以下方式使用AnimatedCheckmark
:
import 'package:flutter/material.dart';
import 'package:animated_checkmark/animated_checkmark.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Animated Checkmark Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: AnimatedCheckmarkDemo(),
);
}
}
class AnimatedCheckmarkDemo extends StatefulWidget {
@override
_AnimatedCheckmarkDemoState createState() => _AnimatedCheckmarkDemoState();
}
class _AnimatedCheckmarkDemoState extends State<AnimatedCheckmarkDemo> {
bool isChecked = false;
void toggleCheckbox() {
setState(() {
isChecked = !isChecked;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Animated Checkmark Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
AnimatedCheckmark(
value: isChecked,
size: 50.0, // 你可以根据需要调整大小
thickness: 4.0, // 你可以根据需要调整线条粗细
padding: 2.0, // 你可以根据需要调整内边距
duration: Duration(milliseconds: 300), // 你可以根据需要调整动画时长
color: Colors.blue, // 你可以根据需要调整颜色
checkColor: Colors.white, // 你可以根据需要调整勾选标记的颜色
),
SizedBox(height: 20.0),
ElevatedButton(
onPressed: toggleCheckbox,
child: Text('Toggle Checkmark'),
),
],
),
),
);
}
}
在这个示例中:
- 我们创建了一个Flutter应用,并在
pubspec.yaml
中添加了animated_checkmark
依赖项。 - 在
AnimatedCheckmarkDemo
类中,我们定义了一个布尔值isChecked
来跟踪勾选标记的状态。 - 使用
AnimatedCheckmark
小部件来显示勾选标记,并根据isChecked
的值动态更新它。 - 我们还添加了一个按钮,点击按钮时调用
toggleCheckbox
方法来切换isChecked
的值,从而触发勾选标记的动画。
这个示例展示了如何使用animated_checkmark
插件在Flutter中实现一个具有动画效果的勾选标记。你可以根据需要调整大小、颜色、线条粗细等属性。