Flutter线性进度指示器插件wave_linear_progress_indicator的使用
Flutter线性进度指示器插件wave_linear_progress_indicator的使用
wave_linear_progress_indicator
是一个用于Flutter的波浪形线性进度指示器插件。它可以为你的应用程序添加动态和视觉上吸引人的进度条。
示例截图
以下是该插件在应用中的效果示例:
使用步骤
1. 添加依赖
首先,在你的 pubspec.yaml
文件中添加 wave_linear_progress_indicator
依赖:
dependencies:
flutter:
sdk: flutter
wave_linear_progress_indicator: ^0.1.0 # 请根据最新版本调整
运行 flutter pub get
来安装新的依赖。
2. 示例代码
以下是一个完整的示例代码,展示了如何使用 WaveLinearProgressIndicator
:
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:wave_linear_progress_indicator/wave_linear_progress_indicator.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 WaveLinearProgressIndicator Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'WaveLinearProgressIndicator Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
double _progress = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Padding(
padding: const EdgeInsets.all(18.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
WaveLinearProgressIndicator(
value: _progress,
enableBounceAnimation: true,
),
const SizedBox(height: 20),
StreamBuilder<double>(
stream: _getDownloadProgress(),
builder: (context, snapshot) {
double progress = 0;
if (snapshot.hasData) {
progress = snapshot.data!;
}
return WaveLinearProgressIndicator(
value: progress,
// waveColor: Colors.orange,
);
}),
const SizedBox(height: 20),
WaveLinearProgressIndicator(
value: _progress,
enableBounceAnimation: true,
waveColor: Colors.orange,
backgroundColor: Colors.grey[150],
minHeight: 20,
),
const SizedBox(height: 20),
LinearProgressIndicator(
value: _progress,
minHeight: 10,
backgroundColor: Colors.orange,
),
const SizedBox(height: 20),
Slider(
value: _progress,
onChanged: (value) {
setState(() {
_progress = value;
});
},
),
],
),
),
),
persistentFooterButtons: [
FloatingActionButton(
onPressed: _increase,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
FloatingActionButton(
onPressed: _decrease,
tooltip: 'Decrease',
child: const Icon(Icons.remove),
)
],
);
}
Stream<double> _getDownloadProgress() async* {
final values = <double>[
0,
0.1,
0.2,
0.3,
0.4,
0.45,
0.7,
0.85,
0.9,
0.95,
0.99,
1.0
];
for (final p in values) {
yield p;
await Future.delayed(const Duration(milliseconds: 1800));
}
}
void _increase() {
final delta = Random().nextDouble();
double newValue = _progress + delta;
newValue = newValue.clamp(0, 1);
setState(() {
_progress = newValue;
});
}
void _decrease() {
final delta = Random().nextDouble();
double newValue = _progress - delta;
newValue = newValue.clamp(0, 1);
setState(() {
_progress = newValue;
});
}
}
3. 关键点解释
- WaveLinearProgressIndicator:这是核心组件,支持多种自定义选项如
value
,enableBounceAnimation
,waveColor
,backgroundColor
, 和minHeight
。 - StreamBuilder:用于从流中获取数据并实时更新进度条。
- Slider:允许用户通过滑动来改变进度值。
- FloatingActionButton:提供增加和减少进度的功能。
通过以上步骤,你可以在Flutter项目中轻松集成和使用 wave_linear_progress_indicator
插件,为你的应用增添更多视觉吸引力。
更多关于Flutter线性进度指示器插件wave_linear_progress_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter线性进度指示器插件wave_linear_progress_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用wave_linear_progress_indicator
插件的示例代码。这个插件提供了一个带有波浪动画效果的线性进度指示器。
首先,你需要在你的pubspec.yaml
文件中添加这个插件的依赖项:
dependencies:
flutter:
sdk: flutter
wave_linear_progress_indicator: ^x.y.z # 请将x.y.z替换为最新版本号
然后,运行flutter pub get
来安装这个依赖项。
接下来,在你的Flutter项目的Dart文件中,你可以按照以下方式使用这个插件:
import 'package:flutter/material.dart';
import 'package:wave_linear_progress_indicator/wave_linear_progress_indicator.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Wave Linear Progress Indicator 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
void initState() {
super.initState();
// 模拟进度变化,例如使用定时器
_startProgress();
}
void _startProgress() {
Timer.periodic(Duration(milliseconds: 100), (timer) {
setState(() {
_progress = (_progress + 0.01).clamp(0.0, 1.0); // 进度值在0到1之间
if (_progress >= 1.0) {
timer.cancel(); // 当进度达到1时停止定时器
}
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Wave Linear Progress Indicator'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SizedBox(
height: 50,
),
WaveLinearProgressIndicator(
progress: _progress,
animationDuration: Duration(seconds: 2), // 动画持续时间
height: 20, // 指示器高度
backgroundColor: Colors.grey[300]!, // 背景颜色
progressColor: Colors.blue, // 进度颜色
waveAnimation: true, // 是否启用波浪动画
),
SizedBox(
height: 20,
),
Text(
'Progress: ${(_progress * 100).toInt()}%',
style: TextStyle(fontSize: 20),
),
],
),
),
);
}
}
在这个示例中:
- 我们首先在
pubspec.yaml
文件中添加了wave_linear_progress_indicator
插件的依赖项。 - 在
MyApp
类中,我们创建了一个简单的Flutter应用。 - 在
MyHomePage
类中,我们使用StatefulWidget
来管理进度状态。 - 在
_startProgress
方法中,我们使用一个定时器来模拟进度变化,每秒更新一次进度值。 - 在
build
方法中,我们使用WaveLinearProgressIndicator
小部件来显示带有波浪动画效果的线性进度指示器,并显示当前的进度百分比。
运行这个代码,你应该会看到一个带有波浪动画效果的线性进度指示器,随着进度的增加,波浪动画也会相应地变化。