VS Code中Flutter项目无法加载音频资源(Unable to Load asset)求助
解决Flutter audioplayers "Unable to Load asset" 错误
1. 核对pubspec.yaml资源配置
即便图片资源正常加载,也要严格检查音频资源的声明格式,确保符合Flutter资源规范:
flutter: assets: - assets/music/music1.mp3 # 若有多个音频文件,可直接声明整个目录 # - assets/music/
注意事项:
assets:必须嵌套在flutter:节点下- 资源路径前的缩进为两个空格(禁止使用tab)
- 路径需与实际文件存放位置完全匹配
2. 验证文件路径与命名
- 确认音频文件确实位于项目根目录的
assets/music/文件夹内,文件名music1.mp3的大小写完全一致(Android、iOS平台对文件名大小写敏感) - 检查文件扩展名,避免出现
.MP3、.m4a这类与代码中声明不符的情况
3. 清理缓存并重建项目
缓存异常可能导致资源加载失败,执行以下操作:
- 停止当前Flutter项目运行
- 执行清理命令:
flutter clean - 重新获取依赖:
flutter pub get - 重新启动项目:
flutter run
4. 优化AudioPlayer使用代码
你的代码仅调用了setSource但未触发播放,且每次点击都会创建新实例,建议优化为:
class _HomeScreenState extends State<HomeScreen> { late AudioPlayer _player; @override void initState() { super.initState(); _player = AudioPlayer(); } @override void dispose() { _player.dispose(); super.dispose(); } @override Widget build(BuildContext context) { // 保留原有布局代码 onTap: () async { try { await _player.setSource(AssetSource('assets/music/music1.mp3')); await _player.play(); // 新增播放触发方法 } catch (e) { print('音频加载错误详情: $e'); } }, // 保留其余布局代码 } }
添加try-catch可捕获更具体的错误信息,便于定位问题。
5. 检查平台专属配置
- Android:确保
android/app/src/main/AndroidManifest.xml中minSdkVersion不低于21(当前audioplayers版本的最低要求) - iOS:在
ios/Runner/Info.plist中添加音频相关配置,避免潜在权限问题:<key>UIBackgroundModes</key> <array> <string>audio</string> </array>
内容的提问来源于stack exchange,提问作者Nassim Boud
相关产品推荐
相关产品推荐

