我对编程很陌生,尤其是颤振。我想写一个音板,基本上是一个按钮列表,每个按钮的作用是在按下它们时播放我在 PC 上的声音。我已经用列表视图和一些材质按钮完成了设计,但我不知道如何让它们在我按下时播放声音。有人能帮我吗?
Cop*_*oad 23
添加audioplayers作为依赖和音频文件,pubspec.yaml这样的文件:
dependencies:
audioplayers: any
flutter:
assets:
- assets/audio/my_audio.mp3
Run Code Online (Sandbox Code Playgroud)
完整代码(空安全):
class _HomePageState extends State<HomePage> {
late final AudioCache _audioCache;
@override
void initState() {
super.initState();
_audioCache = AudioCache(
prefix: 'audio/',
fixedPlayer: AudioPlayer()..setReleaseMode(ReleaseMode.STOP),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: ElevatedButton(
onPressed: () => _audioCache.play('my_audio.mp3'),
child: Text('Play'),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
Ily*_*ent 16
对于需要播放“咔嗒”声的任何人:
import 'package:flutter/services.dart';
Run Code Online (Sandbox Code Playgroud)
SystemSound.play(SystemSoundType.click);
Run Code Online (Sandbox Code Playgroud)
对于重复的声音,我推荐soundpool包。
根据我的经验,它提供了更好的延迟,即触发操作和实际声音播放之间的延迟更低。
这是代码示例(从包的自述文件中复制):
import 'package:soundpool/soundpool.dart';
Soundpool pool = Soundpool(streamType: StreamType.notification);
int soundId = await rootBundle.load("sounds/dices.m4a").then((ByteData soundData) {
return pool.load(soundData);
});
int streamId = await pool.play(soundId);
Run Code Online (Sandbox Code Playgroud)
如果您只想在有人按下按钮时播放音乐,那么您可以按照以下步骤操作:-
1.添加依赖
dependencies:
audioplayers: ^0.10.0
Run Code Online (Sandbox Code Playgroud)
然后在终端中运行以下命令以获取新添加的包 -
flutter packages get
Run Code Online (Sandbox Code Playgroud)
2. 将其导入到 main.dart 或您要使用的文件中。
import 'package:audioplayers/audio_cache.dart';
Run Code Online (Sandbox Code Playgroud)
有两个类可以导入AudioPlayer或AudioCache并使用AudioCache播放本地文件。
3.创建一个AudioCache对象
final player = AudioCache();
Run Code Online (Sandbox Code Playgroud)
4. 使用 play() 方法播放音频
player.play('note1.wav');
Run Code Online (Sandbox Code Playgroud)
注意 - note1.wav 存储在我的主目录中的assets文件夹中,您在使用 play() 方法时不必提及它。
示例代码 -
dependencies:
audioplayers: ^0.10.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13651 次 |
| 最近记录: |