使用audioplayers ^1.0.1加载音频资源失败求助
音频资源加载问题排查方案
核心问题分析
你遇到的两种错误本质是路径配置不匹配+缓存/资源打包问题:
- 第一种错误是
AssetSource会自动拼接pubspec中配置的assets根路径,导致出现重复的assets/assets/路径; - 第二种错误是资源未正确打包到设备缓存,或是文件名特殊字符引发解析异常。
具体解决步骤
修正路径写法
保持pubspec配置不变:flutter: assets: - assets/sounds/代码中
AssetSource直接使用sounds/Pop (1).wav,不需要前缀assets/:final playerSound = AudioPlayer(); await playerSound.setSource(AssetSource('sounds/Pop (1).wav'));清理缓存并重新打包
执行以下命令彻底清理旧缓存,重新构建项目:flutter clean flutter pub get flutter run旧缓存会导致资源无法同步到设备,这是这类问题最常见的解决手段。
优化文件名
文件名中的空格和括号可能引发路径编码问题,建议将Pop (1).wav重命名为pop_1.wav,同步修改代码中的路径:await playerSound.setSource(AssetSource('sounds/pop_1.wav'));验证资源可用性
先通过Flutter原生的资源加载方式确认资源能被访问:import 'package:flutter/services.dart'; Future<void> verifyAsset() async { try { final data = await rootBundle.load('sounds/Pop (1).wav'); print('资源加载成功,大小:${data.lengthInBytes}字节'); } catch (e) { print('资源无法访问:$e'); } }如果这段代码报错,说明资源配置或文件本身有问题;如果成功,再排查audioplayers的缓存权限问题(安卓端默认已开启缓存目录读写权限,通常无需额外配置)。
内容的提问来源于stack exchange,提问作者Mr. Tacio
相关产品推荐
相关产品推荐

