我正在学习颤振课程。我试着在颤动中播放声音。
遗憾的是,我有以下错误代码
这是我的完整代码
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');
}