Flutter圆形进度条插件dashed_circular_progress_bar的使用
Flutter圆形进度条插件dashed_circular_progress_bar的使用
简介
Dashed circular progress bar 是一个开源的Flutter包,用于在Flutter应用程序中创建带有虚线效果的圆形进度条。它提供了多种自定义选项,可以轻松地集成到你的项目中。
版本和兼容性
- License: MIT License
- Version: 0.0.6
- Flutter: 3.13.5
- Dart: 3.1.2
安装
要在你的Flutter项目中使用dashed_circular_progress_bar
,你需要先将其添加到pubspec.yaml
文件的依赖项中:
dependencies:
dashed_circular_progress_bar: ^0.0.6
然后,在需要使用的Dart文件中导入该包:
import 'package:dashed_circular_progress_bar/dashed_circular_progress_bar.dart';
基本示例
示例1 - 简单进度条
要创建一个简单的圆形进度条,首先需要定义一个ValueNotifier
来跟踪进度值的变化:
final ValueNotifier<double> _valueNotifier = ValueNotifier(0);
然后将它添加到Widget中:
DashedCircularProgressBar.aspectRatio(
aspectRatio: 1, // 宽高比
valueNotifier: _valueNotifier,
progress: 478,
maxProgress: 670,
corners: StrokeCap.butt,
foregroundColor: Colors.blue,
backgroundColor: const Color(0xffeeeeee),
foregroundStrokeWidth: 36,
backgroundStrokeWidth: 36,
animation: true,
child: Center(
child: ValueListenableBuilder(
valueListenable: _valueNotifier,
builder: (_, double value, __) => Text(
'${value.toInt()}%',
style: const TextStyle(
color: Colors.black,
fontWeight: FontWeight.w300,
fontSize: 60
),
),
),
),
)
示例2 - 虚线背景进度条
此示例展示了如何创建具有虚线背景的进度条:
DashedCircularProgressBar.aspectRatio(
aspectRatio: 2, // 宽高比
progress: 34,
startAngle: 270,
sweepAngle: 180,
circleCenterAlignment: Alignment.bottomCenter,
foregroundColor: Colors.black,
backgroundColor: const Color(0xffeeeeee),
foregroundStrokeWidth: 3,
backgroundStrokeWidth: 2,
backgroundGapSize: 2,
backgroundDashSize: 1,
seekColor: Colors.yellow,
seekSize: 22,
animation: true,
)
示例3 - 更复杂的进度条
这个例子展示了更复杂的进度条,包括文本和其他样式:
DashedCircularProgressBar.aspectRatio(
aspectRatio: 1, // 宽高比
valueNotifier: _valueNotifier,
progress: 37,
startAngle: 225,
sweepAngle: 270,
foregroundColor: Colors.green,
backgroundColor: const Color(0xffeeeeee),
foregroundStrokeWidth: 15,
backgroundStrokeWidth: 15,
animation: true,
seekSize: 6,
seekColor: const Color(0xffeeeeee),
child: Center(
child: ValueListenableBuilder(
valueListenable: _valueNotifier,
builder: (_, double value, __) => Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'${value.toInt()}%',
style: const TextStyle(
color: Colors.black,
fontWeight: FontWeight.w300,
fontSize: 60
),
),
Text(
'Accuracy',
style: const TextStyle(
color: Color(0xffeeeeee),
fontWeight: FontWeight.w400,
fontSize: 16
),
),
],
)
),
),
)
示例4 - 虚线进度条
你可以使用指定的尺寸而不是宽高比来创建进度条:
DashedCircularProgressBar.square(
dimensions: 350,
progress: 180,
maxProgress: 360,
startAngle: -27.5,
foregroundColor: Colors.redAccent,
backgroundColor: const Color(0xffeeeeee),
foregroundStrokeWidth: 7,
backgroundStrokeWidth: 7,
foregroundGapSize: 5,
foregroundDashSize: 55,
backgroundGapSize: 5,
backgroundDashSize: 55,
animation: true,
child: const Icon(
Icons.favorite,
color: Colors.redAccent,
size: 126
),
)
示例5 - 圆心对齐
通过改变圆心位置,你可以指定进度条的位置:
DashedCircularProgressBar.aspectRatio(
aspectRatio: 1, // 宽高比
progress: 60,
startAngle: 90,
sweepAngle: 90,
corners: StrokeCap.butt,
foregroundStrokeWidth: 7,
backgroundStrokeWidth: 7,
circleCenterAlignment: Alignment.topLeft,
foregroundColor: Colors.white,
backgroundColor: const Color(0x22000000),
animation: true
)
参数描述
以下是DashedCircularProgressBar
的主要参数及其默认值和说明:
参数 | 默认值 | 描述 |
---|---|---|
width | 0 | 进度条宽度 |
height | 0 | 进度条高度 |
aspectRatio | 0 | 宽高比 |
progress | 0 | 当前进度值 |
maxProgress | 100 | 最大进度值 |
startAngle | 0 | 弧形起始角度 |
sweepAngle | 360 | 弧形扫过的角度 |
foregroundStrokeWidth | 2 | 前景弧形厚度 |
backgroundStrokeWidth | 2 | 背景弧形厚度 |
foregroundColor | Colors.blue | 前景弧形颜色 |
backgroundColor | Colors.white | 背景弧形颜色 |
corners | StrokeCap.round | 弧形末端样式 |
foregroundGapSize | 0 | 前景弧形间隙大小 |
foregroundDashSize | 0 | 前景弧形虚线大小 |
backgroundGapSize | 0 | 背景弧形间隙大小 |
backgroundDashSize | 0 | 背景弧形虚线大小 |
seekSize | 0 | 进度条seek大小 |
seekColor | Colors.blue | 进度条seek颜色 |
circleCenterAlignment | Alignment.center | 进度条中心对齐方式 |
animation | false | 是否启用动画 |
animationDuration | Duration(seconds: 1) | 动画持续时间 |
animationCurve | Curves.easeOut | 动画曲线类型 |
onAnimationEnd | null | 动画结束时调用的回调函数 |
ltr | true | 绘制方向(从右到左或反之) |
child | null | 放置在进度条上的子Widget |
valueNotifier | null | 动画值通知器 |
通过这些参数,你可以灵活地调整进度条的外观和行为,以满足你的应用需求。
更多关于Flutter圆形进度条插件dashed_circular_progress_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter圆形进度条插件dashed_circular_progress_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter中使用dashed_circular_progress_bar
插件来创建圆形进度条的示例代码。
首先,你需要在你的pubspec.yaml
文件中添加dashed_circular_progress_bar
的依赖:
dependencies:
flutter:
sdk: flutter
dashed_circular_progress_bar: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter项目中使用这个插件。以下是一个完整的示例,展示了如何使用dashed_circular_progress_bar
来创建一个简单的圆形进度条:
import 'package:flutter/material.dart';
import 'package:dashed_circular_progress_bar/dashed_circular_progress_bar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Dashed Circular Progress Bar Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Dashed Circular Progress Bar Demo'),
),
body: Center(
child: DashedCircularProgressBar(
// 进度值,范围为0到1
progress: 0.75,
// 进度条的颜色
strokeColor: Colors.blue,
// 进度条未填充部分的颜色
backgroundColor: Colors.grey.withOpacity(0.2),
// 进度条宽度
strokeWidth: 8.0,
// 进度条总长度(半径)
radius: 120.0,
// 是否显示中心文本
showCenterText: true,
// 中心文本
centerText: '75%',
// 中心文本样式
centerTextStyle: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: Colors.black,
),
// 进度条动画持续时间
animationDuration: Duration(seconds: 1),
),
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,它包含一个DashedCircularProgressBar
组件。你可以通过调整progress
属性来改变进度条的进度值,通过strokeColor
和backgroundColor
来设置进度条的颜色,通过strokeWidth
和radius
来调整进度条的宽度和大小。
showCenterText
属性用于控制是否在进度条中心显示文本,centerText
用于设置中心文本内容,centerTextStyle
用于设置中心文本的样式。
animationDuration
属性用于设置进度条动画的持续时间,当你更新进度值时,进度条会以这个持续时间来进行动画过渡。
这个示例展示了dashed_circular_progress_bar
插件的基本用法,你可以根据需要进一步自定义和扩展这个示例。