Flutter进度条展示插件progressbar2的使用
Flutter进度条展示插件progressbar2的使用
progressbar2
是一个用于Dart控制台应用程序的进度条插件。本文将详细介绍如何在Flutter应用中使用此插件。
使用
ProgressBar
对象需要一个 formatter
函数和一个 total
值。此外,还可以自定义 width
、completeChar
和 incompleteChar
。
基本用法
const total = 10;
final progressBar = ProgressBar(
formatter: (current, total, progress, elapsed) =>
'[${ProgressBar.formatterBarToken}] ${(progress * 100).floor()}% ${elapsed.inSeconds}s',
total: total,
);
progressBar.render();
for (var i = 0; i < total; ++i) {
await Future<void>.delayed(const Duration(milliseconds: 500));
++progressBar.value;
progressBar.render();
}
格式化
formatter
函数会将给定的信息转换为进度条字符串。此外,当包含 ProgressBar.formatterBarToken
字符串时,它会被替换为进度条指示器。
进度条增量
可以通过 value
设置器随时设置进度条的值。要增加进度条的值1,可以使用简单的 ++myProgressBar.value
语句。
渲染
要将进度条渲染到控制台,可以调用 render()
方法。另外,可以调用 unrender()
方法来清除进度条。
预估时间(ETAs)
由于计算预估时间(ETA)的方法有很多,该插件将实现方法留给开发者,并提供了经过的时间以供参考。
个人推荐使用 package:moving_average
来计算ETA。
致谢
- Jaron Tai jaroncn@gmail.com 为原始
progress_bar
包做出了贡献。
特性和问题
请在 问题追踪器 上提交功能请求和错误报告。
许可证
Copyright (c) 2021 hacker1024.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the hacker1024 nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
更多关于Flutter进度条展示插件progressbar2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter进度条展示插件progressbar2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter中使用progressbar2
插件来展示进度条的示例代码。progressbar2
是一个流行的 Flutter 进度条展示插件,提供了多种样式和自定义选项。
首先,确保你已经在pubspec.yaml
文件中添加了progressbar2
依赖项:
dependencies:
flutter:
sdk: flutter
progressbar2: ^0.0.4 # 请注意版本号,使用最新版本
然后运行flutter pub get
来安装依赖。
接下来是一个完整的示例代码,展示如何在Flutter应用中使用progressbar2
插件:
import 'package:flutter/material.dart';
import 'package:progressbar2/progressbar2.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter ProgressBar2 Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
double _progress = 0.0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ProgressBar2 Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SizedBox(
height: 50,
),
// 使用 CircularProgressBar2
CircularProgressBar2(
progress: _progress,
strokeWidth: 5.0,
backgroundColor: Colors.grey[200]!,
child: Center(
child: Text(
'$_progress%',
style: TextStyle(color: Colors.white, fontSize: 20),
),
),
),
SizedBox(
height: 20,
),
// 使用 LinearProgressBar2
LinearProgressBar2(
progress: _progress,
height: 20,
backgroundColor: Colors.grey[200]!,
progressColor: Colors.blue,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text('0%'),
Text('$_progress%'),
],
),
),
SizedBox(
height: 50,
),
ElevatedButton(
onPressed: () {
setState(() {
_progress += 0.1;
if (_progress >= 1.0) {
_progress = 0.0;
}
});
},
child: Text('Increase Progress'),
),
],
),
),
);
}
}
代码说明:
- 依赖项:在
pubspec.yaml
文件中添加progressbar2
依赖项。 - 导入包:在Dart文件中导入
progressbar2
包。 - UI结构:
- 使用
CircularProgressBar2
和LinearProgressBar2
来展示进度条。 CircularProgressBar2
:圆形进度条,可以自定义进度、线条宽度、背景颜色等。LinearProgressBar2
:线性进度条,可以自定义高度、背景颜色、进度颜色等。
- 使用
- 交互:通过点击按钮来增加进度条的进度,并在进度达到100%时重置为0。
注意事项:
- 确保
progressbar2
的版本号是最新的,或者根据pub.dev
上的信息进行适当调整。 - 你可以根据需要进一步自定义进度条的样式和属性。
希望这个示例代码对你有所帮助!