如何在flutter中使用包音频播放器播放声音



我正在学习颤振课程。我试着在颤动中播放声音。

遗憾的是,我有以下错误代码

这是我的完整代码

import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/material.dart';
void main() => runApp(XylophoneApp());
class XylophoneApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(
child: Center(
child: TextButton(
onPressed: () async {
final player=AudioPlayer();
await player.play(AssetSource('sounds/note1.wav'));
},
child: const Text('Click Me'))),
),
),
);
}
}

这是我的pubspec.yaml文件设置

dependencies:
audioplayers: ^1.1.1
assets:
- sounds/

以下是我的错误:

****[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Unable to load asset: assets/sounds/note1.wav
#0      PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:258:7)
<asynchronous suspension>
#1      AudioCache.fetchToMemory (package:audioplayers/src/audio_cache.dart:75:22)
<asynchronous suspension>
#2      AudioCache.load (package:audioplayers/src/audio_cache.dart:101:31)
<asynchronous suspension>
#3      AudioPlayer.setSourceAsset (package:audioplayers/src/audioplayer.dart:237:17)
<asynchronous suspension>
#4      AudioPlayer.play (package:audioplayers/src/audioplayer.dart:123:5)
<asynchronous suspension>
#5      XylophoneApp.build.<anonymous closure> (package:xylophone1/main.dart:16:21)
<asynchronous suspension>****

我只需要用这个音频播放器包播放声音。

我已经更改了pubspec.yaml设置和文件夹名称"资产";我还把这条线的来源改成了"等待";player.play(AssetSource('note1.wav'((">

Audioplayers在文件路径前面添加assets/。这就是为什么你得到了例外:

Exception: Unable to load asset: assets/sounds/note1.wav

Audioplayers希望您将assets作为资产的根文件夹。换句话说,在您的pubspec.yaml中,您应该具有以下内容:

assets: 
- assets/sounds/

然后将所有音频文件放在sounds文件夹中。没有必要在pubspec中指定每个文件。

将您的播放器保存在一个单独的类/库中,以提高可重用性和可读性:

玩家.飞镖

import 'package:audioplayers/audioplayers.dart';
class Player {
static play(String src) async {
final player = AudioPlayer();
await player.play(AssetSource(src));
}
}

称之为:

onPressed: () {
Player.play('sounds/note1.wav');
}

最新更新