Flutter进度指示器插件simple_progress_indicators的使用
Flutter进度指示器插件simple_progress_indicators的使用
概述
simple_progress_indicators
是一个用于显示进度或创建简单进度条动画的Flutter包。它支持实色和渐变色的进度条,并提供了几种不同类型的进度指示器。
如何使用
Linear Progress Indicator (线性进度指示器)
ProgressBar
ProgressBar
是一个基本的线性指示器小部件,可以生成带有可选背景的水平圆角矩形。
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Scaffold(
body: Center(
child: ProgressBar(
value: 0.5,
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Colors.yellowAccent, Colors.deepOrange],
),
),
),
),
);
}
参数:
value
:当前进度值,范围从0.0
到1.0
width
:进度条宽度,默认为200.0
height
:进度条高度,默认为10.0
color
:进度条填充颜色gradient
:渐变填充,接受Gradient
类backgroundColor
:进度条背景颜色,默认为透明
注意:不能同时指定 color
和 gradient
属性。
ProgressBarAnimation
ProgressBarAnimation
是一个简单的动画进度条小部件,它会根据给定的 duration
动画化 ProgressBar
小部件。
ProgressBarAnimation(
duration: const Duration(seconds: 2),
gradient: const LinearGradient(
colors: [
Colors.blue,
Colors.purple,
],
),
backgroundColor: Colors.grey.withOpacity(0.4),
)
参数:
duration
:从0%
到100%
的动画持续时间width
、height
、color
、gradient
、backgroundColor
同上curve
:动画曲线,默认为线性,可以使用Curves
类中的其他曲线
AnimatedProgressBar
AnimatedProgressBar
是一个隐式动画小部件,它会在 value
发生变化时进行动画过渡。
AnimatedProgressBar(
value: full ? 1.0 : 0.0,
duration: const Duration(seconds: 3),
gradient: const LinearGradient(
colors: [
Colors.amber,
Colors.red,
],
),
backgroundColor: Colors.grey.withOpacity(0.4),
)
参数:
value
:目标进度值,需要改变duration
:从初始值到最终值的动画持续时间width
、height
、color
、gradient
、backgroundColor
、curve
同上onEnd
:动画结束时的回调函数
示例代码
以下是一个完整的示例应用,展示了如何使用 simple_progress_indicators
包中的各种进度条:
import 'package:flutter/material.dart';
import 'package:simple_progress_indicators/simple_progress_indicators.dart';
void main() {
runApp(const SimpleProgressIndicatorsApp());
}
class SimpleProgressIndicatorsApp extends StatefulWidget {
const SimpleProgressIndicatorsApp({Key? key}) : super(key: key);
@override
State<SimpleProgressIndicatorsApp> createState() => _SimpleProgressIndicatorsAppState();
}
class _SimpleProgressIndicatorsAppState extends State<SimpleProgressIndicatorsApp> {
bool full = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: const Text('Simple Progress Indicator Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Column(
children: [
const Text('ProgressBar'),
ProgressBar(
value: 0.5,
gradient: const LinearGradient(
colors: [
Colors.yellow,
Colors.red,
],
),
backgroundColor: Colors.grey.withOpacity(0.4),
),
],
),
Column(
children: [
const Text('ProgressBarAnimation'),
ProgressBarAnimation(
duration: const Duration(seconds: 2),
gradient: const LinearGradient(
colors: [
Colors.blue,
Colors.purple,
],
),
backgroundColor: Colors.grey.withOpacity(0.4),
),
],
),
Column(
children: [
const Text('AnimatedProgressBar'),
AnimatedProgressBar(
value: full ? 1.0 : 0.0,
duration: const Duration(seconds: 2),
gradient: const LinearGradient(
colors: [
Colors.amber,
Colors.red,
],
),
backgroundColor: Colors.grey.withOpacity(0.4),
),
ElevatedButton(
onPressed: () {
full = !full;
setState(() {});
},
child: Text(full ? 'To 0%' : 'To 100%'),
)
],
)
],
),
),
),
);
}
}
通过这个示例,您可以了解如何在Flutter应用中使用 simple_progress_indicators
包来创建不同类型的进度条。希望这对您有所帮助!
更多关于Flutter进度指示器插件simple_progress_indicators的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter进度指示器插件simple_progress_indicators的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用simple_progress_indicators
插件的示例代码。这个插件提供了一系列简单而美观的进度指示器,可以很方便地集成到你的应用中。
首先,确保你已经在pubspec.yaml
文件中添加了simple_progress_indicators
依赖:
dependencies:
flutter:
sdk: flutter
simple_progress_indicators: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来是一个完整的示例代码,展示了如何使用这个插件中的几种进度指示器:
import 'package:flutter/material.dart';
import 'package:simple_progress_indicators/simple_progress_indicators.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Simple Progress Indicators Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: ProgressIndicatorDemo(),
);
}
}
class ProgressIndicatorDemo extends StatefulWidget {
@override
_ProgressIndicatorDemoState createState() => _ProgressIndicatorDemoState();
}
class _ProgressIndicatorDemoState extends State<ProgressIndicatorDemo> with SingleTickerProviderStateMixin {
double _progress = 0.0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Simple Progress Indicators Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SizedBox(height: 20),
Text('Circular Progress Indicator'),
SizedBox(height: 10),
CircularProgressIndicator(
value: _progress,
strokeWidth: 5.0,
backgroundColor: Colors.grey[200]!,
valueColor: AlwaysStoppedAnimation<Color>(Colors.blue),
),
SizedBox(height: 40),
Text('Dual CircularProgressIndicator'),
SizedBox(height: 10),
DualCircularProgressIndicator(
value1: _progress,
value2: _progress * 0.5,
radius: 45.0,
strokeWidth: 6.0,
backgroundColor: Colors.grey[200]!,
valueColor1: AlwaysStoppedAnimation<Color>(Colors.blue),
valueColor2: AlwaysStoppedAnimation<Color>(Colors.green),
),
SizedBox(height: 40),
Text('Arc Progress Indicator'),
SizedBox(height: 10),
ArcProgressIndicator(
value: _progress,
size: 120.0,
strokeWidth: 7.0,
backgroundColor: Colors.grey[200]!,
valueColor: AlwaysStoppedAnimation<Color>(Colors.blue),
child: Center(
child: Text(
'$_progress * 100%',
style: TextStyle(fontSize: 18, color: Colors.white),
),
),
),
SizedBox(height: 40),
Text('SemiCircularProgressIndicator'),
SizedBox(height: 10),
SemiCircularProgressIndicator(
value: _progress,
lineWidth: 10.0,
backgroundColor: Colors.grey[200]!,
progressColor: Colors.blue,
),
SizedBox(height: 40),
ElevatedButton(
onPressed: () {
setState(() {
_progress += 0.1;
if (_progress >= 1.0) {
_progress = 0.0;
}
});
},
child: Text('Increment Progress'),
),
],
),
),
);
}
}
在这个示例中,我们展示了四种不同的进度指示器:
- CircularProgressIndicator:标准的圆形进度条。
- DualCircularProgressIndicator:双圆形进度条,可以显示两个不同的进度值。
- ArcProgressIndicator:弧形进度条,可以在进度条内部显示文本。
- SemiCircularProgressIndicator:半圆进度条。
此外,还有一个按钮用于递增进度值,以动态展示进度指示器的变化。
你可以根据需要调整这些进度指示器的样式和参数,以满足你的应用需求。