You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:30:54