Flutter动态波浪效果插件wave_blob的使用
Flutter动态波浪效果插件wave_blob的使用
Features
wave_blob
插件提供了一个可以自定义的波浪动画效果。您可以根据语音的振幅来播放音频。
Blob Wave Animation
这个包提供了一个可以根据需求定制的波浪动画。你可以通过调整参数来改变动画的效果。
Preview
以下是插件的一个预览图:
Getting Started
Installing
-
在
pubspec.yaml
文件中添加依赖:dependencies: wave_blob: <latest-version>
-
运行
flutter pub get
命令以安装依赖。 -
导入包:
import 'package:wave_blob/wave_blob.dart';
Usage
Simple Usage
将Widget包裹在WaveBlob
中,并分配必要的参数。
SizedBox(
width: MediaQuery.sizeOf(context).width * 0.4,
height: MediaQuery.sizeOf(context).width * 0.4,
child: WaveBlob(
child: const Icon(
Icons.mic,
color: Colors.white,
size: 50.0,
),
),
),
注意:不要忘记设置Widget的宽度和高度。
更多详情请查看example app。
Customization
您可以轻松地自定义blob效果,包括更改blob颜色、动画速度、最小和最大半径等。
示例:
完整示例Demo
以下是一个完整的示例代码,展示了如何使用wave_blob
插件创建一个带有可调节振幅和缩放比例的波浪动画效果。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:wave_blob/wave_blob.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
double _scale = 1.0;
double _amplitude = 4250.0;
bool _autoScale = true;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
Timer.periodic(const Duration(milliseconds: 50), (timer) {
setState(() {});
});
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Blob Wave Animation',
theme: ThemeData(
brightness: Brightness.dark,
useMaterial3: true,
),
home: Scaffold(
backgroundColor: const Color.fromARGB(255, 27, 34, 42),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('Amplitude'),
SizedBox(
width: MediaQuery.sizeOf(context).width * 0.8,
child: Slider(
value: _amplitude,
activeColor: Colors.blue,
inactiveColor: Colors.lightBlueAccent.withOpacity(0.2),
min: 0.0,
max: 8500.0,
onChanged: (v) {
setState(() {
_amplitude = v;
});
},
),
),
const Text('Scale'),
SizedBox(
width: MediaQuery.sizeOf(context).width * 0.8,
child: Row(
children: [
Expanded(
child: Slider(
value: _scale,
activeColor: Colors.blue,
inactiveColor: Colors.lightBlueAccent.withOpacity(0.2),
min: 1.0,
max: 1.3,
onChanged: (v) {
setState(() => _scale = v);
},
),
),
Checkbox(
value: _autoScale,
activeColor: Colors.blue,
checkColor: Colors.white,
onChanged: (v) {
setState(() {
_autoScale = v!;
});
},
),
const Text('Auto'),
],
),
),
const SizedBox(height: 20.0),
Container(
width: MediaQuery.sizeOf(context).width * 0.8,
height: MediaQuery.sizeOf(context).width * 0.8,
decoration: BoxDecoration(
color: Colors.white12,
borderRadius: BorderRadius.circular(8.0),
),
child: WaveBlob(
blobCount: 2,
amplitude: _amplitude,
scale: _scale,
autoScale: _autoScale,
centerCircle: true,
overCircle: true,
circleColors: const [
/// If you don't want use Gradient, set just one color
Colors.blue,
],
child: const Icon(
Icons.mic,
color: Colors.white,
size: 50.0,
),
),
),
],
),
),
),
);
}
}
这段代码创建了一个包含滑动条的界面,允许用户调整振幅和缩放比例,并实时更新波浪动画效果。
更多关于Flutter动态波浪效果插件wave_blob的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter动态波浪效果插件wave_blob的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter中使用wave_blob
插件来实现动态波浪效果的代码示例。wave_blob
是一个用于创建动态波浪动画效果的Flutter插件。
首先,确保你已经在pubspec.yaml
文件中添加了wave_blob
依赖:
dependencies:
flutter:
sdk: flutter
wave_blob: ^最新版本号 # 请替换为当前最新的版本号
然后运行flutter pub get
来获取依赖。
接下来,你可以在你的Flutter应用中使用这个插件来创建动态波浪效果。以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:wave_blob/wave_blob.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Wave Blob Example'),
),
body: Center(
child: WaveBlobExample(),
),
),
);
}
}
class WaveBlobExample extends StatefulWidget {
@override
_WaveBlobExampleState createState() => _WaveBlobExampleState();
}
class _WaveBlobExampleState extends State<WaveBlobExample> with SingleTickerProviderStateMixin {
late AnimationController _controller;
@override
void initState() {
super.initState();
_controller = AnimationController(
duration: const Duration(seconds: 5),
vsync: this,
)..repeat(reverse: true);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Container(
height: 300,
width: double.infinity,
decoration: BoxDecoration(
color: Colors.blueGrey.shade200,
),
child: Stack(
alignment: Alignment.center,
children: <Widget>[
Positioned(
top: 50,
left: 0,
right: 0,
child: WaveBlob(
color: Colors.deepOrange,
size: Size(double.infinity, 100),
amplitude: 20,
frequency: 0.05,
offset: Offset(0, _controller.value * 100),
speed: 0.5,
),
),
Positioned(
bottom: 50,
left: 0,
right: 0,
child: WaveBlob(
color: Colors.cyan,
size: Size(double.infinity, 100),
amplitude: 30,
frequency: 0.03,
offset: Offset(0, -_controller.value * 100),
speed: -0.3,
),
),
],
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个WaveBlobExample
组件。这个组件使用了WaveBlob
来创建两个波浪效果,一个在上半部分,一个在下半部分。
关键部分:
-
AnimationController
:用于控制波浪动画的进度。在这里,我们设置了一个持续时间为5秒的动画,并让它在正向和反向之间重复。 -
WaveBlob
:创建波浪效果的组件。color
:波浪的颜色。size
:波浪的大小。amplitude
:波浪的振幅。frequency
:波浪的频率。offset
:波浪的偏移量,这里我们将其与动画控制器的值绑定,以实现动态效果。speed
:波浪的移动速度。
运行这个代码,你将看到一个带有动态波浪效果的Flutter应用。你可以根据需要调整WaveBlob
的参数,以实现不同的波浪效果。