我正在尝试在flutter(Android)中使用audioplayers插件,功能是一旦用户扫描条形码,之后就会播放蜂鸣声。 这是我的 pubspec.yml 代码:
dependencies:
flutter:
sdk: flutter
flutter_overlay_loader: ^2.0.0
provider: ^6.0.0
collection: ^1.15.0
permission_handler: ^8.0.0
intl: ^0.17.0
cupertino_icons: ^1.0.2
http: ^1.1.2
flutter_secure_storage: ^9.0.0
barcode_scan2: ^4.3.0
audioplayers: ^5.2.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter:
fonts:
- family: Poppins
fonts:
- asset: asset/fonts/Poppins-Regular.ttf
- asset: asset/fonts/Poppins-Medium.ttf
weight: 500
uses-material-design: true
assets:
- asset/images/
- asset/images/audit/
- asset/images/inquiry/
- asset/images/common_icon/
- asset/images/bottomNavigation/
- asset/images/floatingButton/
- asset/json/user/
- asset/sound/
我这样使用它:
void handleBarcodeScan() async {
var result = await BarcodeScanner.scan();
print(result.rawContent);
if (result.rawContent.isNotEmpty) {
// Play beep sound
AudioPlayer audioPlayer = AudioPlayer();
await audioPlayer.play(AssetSource('asset/sound/beep.mp3'));
}
handleAddButtonPress(
barcode: result.rawContent,
inventoryDetails: widget.inventoryDetails,
);
}
我收到此错误:未处理的异常:无法加载资源:“assets/asset/sound/beep.mp3”。
请按照正确的路径,在你的pubspec.yaml中进行配置
assets:
- assets/images/
放置例如图像文件“myImage.png”并使用以下路径调用您的代码:
static Widget myImage = Image.asset('assets/images/myImage.png');
我也有同样的问题。
首先,您不需要额外的“资源”,因为 AudioPlayer 默认情况下有一个名为 的前缀
https://github.com/bluefireteam/audioplayers/blob/main/getting_started.md
AssetSource:播放与您的应用程序捆绑的资源,默认在资源目录中。要自定义前缀,请参阅 https://github.com/bluefireteam/audioplayers/blob/main/getting_started.md#audiocache
在启动 AudioPlayer 之前尝试此操作
AudioCache.instance = AudioCache(prefix: '');
所以结果应该是这样的:
AudioCache.instance = AudioCache(prefix: '');
final audioPlayer = AudioPlayer();
await audioPlayer.play(AssetSource('sound/beep.mp3'));