Flutter点击按钮无音效,提示无法加载assets/audios/note1.wav问题求助
问题
Flutter代码逻辑看似正常,但点击按钮时无法播放新音效,修改目录文件夹名称后问题仍未解决。代码通过Random生成1-5的随机数,尝试加载sounds/note$soundNumber.wav资源,运行时报错提示无法加载assets/audios/note1.wav,但pubspec.yaml中配置的assets路径为assets/sounds/。
代码示例
import 'package:flutter/material.dart'; import 'package:audioplayers/audioplayers.dart'; import 'dart:math'; void main() => runApp(XylophoneApp()); class XylophoneApp extends StatelessWidget { void playSound () { final player = AudioPlayer(); int soundNumber = Random().nextInt(5) + 1; player.setSource(AssetSource('sounds/note$soundNumber.wav')); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: SafeArea( child: Center( child:TextButton (onPressed: () { playSound(); }, child:const Text('Click Me')), ), ), ), ); } }
报错信息
E/flutter ( 8119): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: Unable to load asset: assets/audios/note1.wav E/flutter ( 8119): #0 PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:237:7) E/flutter ( 8119): <asynchronous suspension>
pubspec.yaml配置
assets: - assets/sounds/
解决方案
- 修正资源路径:报错显示程序尝试加载
assets/audios/note1.wav,但实际资源目录是assets/sounds/,需将代码中AssetSource的路径改为AssetSource('assets/sounds/note$soundNumber.wav'),同时排查项目中是否有其他硬编码audios路径的地方。 - 清理缓存重启:执行
flutter clean清理项目缓存,再重新运行,避免旧路径缓存干扰。 - 验证文件存在性:确认
note1.wav至note5.wav都存在于assets/sounds/目录下,文件名及后缀(.wav)无大小写错误(Flutter对资源文件名大小写敏感)。 - 检查pubspec配置:确保pubspec.yaml中的
assets配置缩进符合YAML语法要求,路径书写无误。
内容的提问来源于stack exchange,提问作者MaryamMozaffari
相关产品推荐
相关产品推荐

