Flutter圆形进度条插件circular_seek_bar的使用
Flutter圆形进度条插件circular_seek_bar的使用
简介
circular_seek_bar
是一个用于Flutter的圆形进度条/滑块组件,支持自定义动画、虚线和渐变等特性。它可以帮助开发者轻松创建各种风格的圆形进度条或滑块。
安装
要开始使用这个插件,请按照以下步骤操作:
1. Depend on it
在你的项目的 pubspec.yaml
文件中添加依赖:
dependencies:
circular_seek_bar: ^1.1.0
或者直接通过命令行添加:
flutter pub add circular_seek_bar
2. Install it
运行以下命令安装包:
flutter pub get
3. Import it
然后,在你的Dart代码中导入该库:
import 'package:circular_seek_bar/circular_seek_bar.dart';
基本用法示例
下面是一个完整的示例应用,展示了如何配置并使用 CircularSeekBar
组件。此示例包括了对进度、角度、宽度、是否使用渐变、圆角样式、动画效果、滑块可见性及交互性的实时调整。
示例代码
import 'package:circular_seek_bar/circular_seek_bar.dart';
import 'package:flutter/material.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: 'Flutter circular_seek_bar example',
theme: ThemeData(
primaryColor: Colors.blue,
brightness: Brightness.dark,
),
home: const CircularSeekBarExamplePage(),
);
}
}
class CircularSeekBarExamplePage extends StatefulWidget {
const CircularSeekBarExamplePage({Key? key}) : super(key: key);
@override
State<CircularSeekBarExamplePage> createState() => _CircularSeekBarExamplePageState();
}
class _CircularSeekBarExamplePageState extends State<CircularSeekBarExamplePage> {
final ValueNotifier<double> _valueNotifier = ValueNotifier(0);
double _progress = 90;
double _startAngle = 45;
double _sweepAngle = 270;
double _dashWidth = 0;
double _dashGap = 0;
double _barWidth = 8.0;
bool _useGradient = true;
bool _rounded = true;
bool _animation = true;
bool _thumbVisible = true;
bool _interactive = true;
@override
void dispose() {
_valueNotifier.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Flutter circular_seek_bar example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
CircularSeekBar(
width: double.infinity,
progress: _progress,
height: 250,
barWidth: _barWidth,
startAngle: _startAngle,
sweepAngle: _sweepAngle,
strokeCap: _rounded ? StrokeCap.round : StrokeCap.butt,
progressGradientColors: _useGradient
? [
Colors.red,
Colors.orange,
Colors.yellow,
Colors.green,
Colors.blue,
Colors.indigo,
Colors.purple
]
: [],
dashWidth: _dashWidth,
dashGap: _dashGap,
animation: _animation,
curves: Curves.linear,
innerThumbRadius: _thumbVisible ? 5 : 0,
innerThumbStrokeWidth: _thumbVisible ? 3 : 0,
outerThumbRadius: _thumbVisible ? 5 : 0,
outerThumbStrokeWidth: _thumbVisible ? 10 : 0,
valueNotifier: _valueNotifier,
interactive: _interactive,
child: Center(
child: ValueListenableBuilder(
valueListenable: _valueNotifier,
builder: (_, double value, __) => Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('${value.round()}',
style: TextStyle(color: Colors.white)),
Text('progress',
style: TextStyle(color: Colors.grey)),
],
)),
),
),
const SizedBox(height: 20,),
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
// 滑动条和其他控件来动态改变属性...
// (这部分内容与上面提供的示例相同)
],
),
),
),
],
),
),
);
}
}
属性说明
以下是 CircularSeekBar
的一些主要属性及其默认值:
Property | Type | Default | Description |
---|---|---|---|
width | double |
required | 圆形进度条的宽度。 |
height | double |
required | 圆形进度条的高度。 |
progress | double |
0 | 当前进度值。 |
minProgress | double |
0 | 最小进度值。 |
maxProgress | double |
100 | 最大进度值。 |
startAngle | double |
0 | 开始绘制的角度。 |
sweepAngle | double |
360 | 绘制的角度范围。 |
barWidth | double |
10 | 进度条的厚度。 |
trackColor | Color |
Colors.white54 | 背景轨道颜色。 |
trackGradientColors | List<Color> |
[] | 背景轨道渐变颜色列表。 如果设置了 trackGradientColors ,则不会应用 trackColor 。 |
progressColor | Color |
Colors.blue | 前景进度颜色。 |
progressGradientColors | List<Color> |
[] | 前景进度渐变颜色列表。 如果设置了 progressGradientColors ,则不会应用 progressColor 。 |
strokeCap | StrokeCap |
StrokeCap.round | 弧线两端的样式。 |
animation | bool |
true | 是否启用动画。 |
animDurationMillis | int |
1000 | 动画持续时间(毫秒)。 |
curves | Curve |
Curves.linear | 动画曲线类型。 |
innerThumbRadius | double |
0 | 内部滑块半径。 |
innerThumbStrokeWidth | double |
0 | 内部滑块边框宽度。 |
innerThumbColor | Color |
Colors.white | 内部滑块颜色。 |
outerThumbRadius | double |
0 | 外部滑块半径。 |
outerThumbStrokeWidth | double |
0 | 外部滑块边框宽度。 |
outerThumbColor | Color |
Colors.white | 外部滑块颜色。 |
dashWidth | double |
0 | 虚线宽度。 |
dashGap | double |
0 | 虚线间隔。 |
valueNotifier | ValueNotifier<double>? |
null | 当进度发生变化时通知监听器的对象。 |
onEnd | VoidCallback? |
null | 动画结束时调用的回调函数。 |
interactive | bool |
true | 是否允许用户点击来改变进度。 |
child | Widget? |
null | 放置在进度条上的子组件。 |
结论
通过上述介绍,你应该已经了解了如何在Flutter项目中集成和使用 circular_seek_bar
插件。你可以根据实际需求调整各个参数以实现不同的视觉效果。如果你有任何问题或者需要进一步的帮助,请参考官方文档或访问GitHub仓库获取更多信息。
更多关于Flutter圆形进度条插件circular_seek_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter圆形进度条插件circular_seek_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用circular_seek_bar
插件的详细代码示例。circular_seek_bar
是一个用于创建圆形进度条的Flutter插件。
1. 添加依赖
首先,你需要在你的pubspec.yaml
文件中添加circular_seek_bar
的依赖:
dependencies:
flutter:
sdk: flutter
circular_seek_bar: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 导入插件
在你的Dart文件中导入插件:
import 'package:circular_seek_bar/circular_seek_bar.dart';
3. 使用CircularSeekBar
下面是一个简单的例子,展示如何在你的Flutter应用中使用CircularSeekBar
。
import 'package:flutter/material.dart';
import 'package:circular_seek_bar/circular_seek_bar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'CircularSeekBar Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CircularSeekBarScreen(),
);
}
}
class CircularSeekBarScreen extends StatefulWidget {
@override
_CircularSeekBarScreenState createState() => _CircularSeekBarScreenState();
}
class _CircularSeekBarScreenState extends State<CircularSeekBarScreen> {
double _progress = 0.0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('CircularSeekBar Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircularSeekBar(
radius: 150.0,
strokeWidth: 10.0,
progress: _progress,
startAngle: -90.0,
clockwise: true,
backgroundColor: Colors.grey[300]!,
progressColor: Colors.blue,
onChangeListener: (progress) {
setState(() {
_progress = progress;
});
},
),
SizedBox(height: 20.0),
Text(
'Progress: ${(_progress * 100).toInt()}%',
style: TextStyle(fontSize: 24.0),
),
],
),
),
);
}
}
代码解释
-
依赖和导入:
- 在
pubspec.yaml
文件中添加circular_seek_bar
依赖。 - 在Dart文件中导入
circular_seek_bar
包。
- 在
-
主应用:
- 创建一个
MyApp
类,它是你的Flutter应用的入口。 - 在
MyApp
中,使用MaterialApp
并设置主题和主页为CircularSeekBarScreen
。
- 创建一个
-
CircularSeekBarScreen:
- 创建一个有状态的
CircularSeekBarScreen
小部件。 - 在状态中定义一个
_progress
变量来存储当前的进度。 - 使用
CircularSeekBar
小部件,并配置其属性如半径、线宽、进度、起始角度、是否顺时针、背景颜色和进度颜色。 - 使用
onChangeListener
回调来更新进度值。
- 创建一个有状态的
-
显示进度:
- 在
CircularSeekBar
下方显示一个Text
小部件来显示当前的进度值。
- 在
这个示例展示了如何创建一个简单的圆形进度条,并实时更新其进度值。你可以根据需要进一步自定义CircularSeekBar
的属性,以满足你的特定需求。