Flutter集成just_audio报'player已定义'错误求助
解决just_audio示例代码中"player重复声明"的错误
错误原因
直接把pub.dev上的just_audio示例代码复制到默认生成的main.dart里时,大概率是没有替换原有代码而是直接追加,或者示例代码复制时重复粘贴了变量声明部分,导致player变量被多次定义,触发编译错误。
解决方法
- 打开
main.dart,清空原有所有代码。 - 复制下面修正后的完整代码,确保
player变量仅在State类中声明一次。
修正后的完整代码
import 'package:flutter/material.dart'; import 'package:just_audio/just_audio.dart'; void main() => runApp(const MyApp()); class MyApp extends StatefulWidget { const MyApp({Key? key}) : super(key: key); @override State<MyApp> createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { // 只在这里声明一次AudioPlayer实例 final player = AudioPlayer(); @override void initState() { super.initState(); // 替换成你自己的音频资源地址 player.setAudioSource(AudioSource.uri(Uri.parse( "https://assets.mixkit.co/sfx/preview/mixkit-arcade-game-jump-coin-216.mp3"))); } @override void dispose() { // 页面销毁时释放播放器资源,避免内存泄漏 player.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text('音频播放器Demo')), body: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ ElevatedButton( onPressed: () => player.play(), child: const Text('播放'), ), const SizedBox(height: 16), ElevatedButton( onPressed: () => player.pause(), child: const Text('暂停'), ), ], ), ), ), ); } }
额外提示
- 代码里的音频URL我换成了一个可正常访问的测试地址,你可以替换成自己的音频资源链接。
- 一定要在
dispose方法里调用player.dispose(),否则会造成内存泄漏。
内容的提问来源于stack exchange,提问作者Thomas Meli
相关产品推荐
相关产品推荐

