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

Flutter中audioplayers音频播放器无法播放本地音频求助

解决Flutter audioplayers 2.0.0播放本地音频无声音的问题

错误根源分析

控制台抛出的MissingPluginException明确指向核心问题:找不到path_provider插件的getTemporaryDirectory方法实现。audioplayers 2.x版本依赖path_provider处理本地资源缓存,该依赖缺失或未正确配置会导致音频加载失败;同时你的音频资源路径写法也存在错误。

分步解决方案

1. 配置path_provider依赖

  • 在pubspec.yaml的dependencies块中添加对应依赖:
    dependencies:
      flutter:
        sdk: flutter
      audioplayers: ^2.0.0
      path_provider: ^2.0.15 # 适配audioplayers 2.0.0的稳定版本
    
  • 执行flutter pub get拉取依赖
  • 必须步骤:停止当前运行的应用,重新执行flutter run启动(热重载/热重启无法加载新插件的原生实现)
    • iOS需额外执行cd ios && pod install后再启动应用

2. 修正音频资源配置与路径

  • 先在pubspec.yaml中声明assets资源:
    flutter:
      assets:
        - assets/note1.wav
        - assets/note2.wav
        - assets/note3.wav
        - assets/note4.wav
        - assets/note5.wav
        - assets/note6.wav
        - assets/note7.wav
    
    若assets文件夹下仅包含这些音频文件,可简化为- assets/
  • 修改AssetSource路径:原代码中'assets_note$noteToPlay.wav'写法错误,正确路径应为'note$noteToPlay.wav'(AssetSource会自动读取pubspec配置的assets目录下的文件)

3. 优化AudioPlayer实例(可选,提升性能)

每次点击创建新AudioPlayer实例会造成资源浪费,建议将实例提升为类成员:

import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  final AudioPlayer _player = AudioPlayer(); // 类成员级实例

  Widget buildKey(int noteToPlay, Color keyColor) {
    return Expanded(
      child: Container(
        color: keyColor,
        child: TextButton(
          child: Text(
            'This is the button #$noteToPlay',
            style: TextStyle(
              fontSize: 25,
              color: Colors.white,
            ),
          ),
          onPressed: () async {
            await _player.play(AssetSource('note$noteToPlay.wav'));
          },
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: SafeArea(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              buildKey(1, Colors.red),
              buildKey(2, Colors.orange),
              buildKey(3, Colors.yellow),
              buildKey(4, Colors.green),
              buildKey(5, Colors.teal),
              buildKey(6, Colors.blue),
              buildKey(7, Colors.purple),
            ],
          ),
        ),
      ),
    );
  }
}

验证要点

  1. 确认依赖安装完成且应用已重新启动
  2. 检查音频文件名与代码路径完全匹配(Android系统区分文件名大小写)
  3. 点击按键测试音频播放

内容的提问来源于stack exchange,提问作者Alhamzah Omar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:20:21