嘿,我想为我的应用程序添加背景音乐,因此我需要知道如何在Flutter中播放音频文件。我已经导入了许多音频包,但没有一个真正起作用,我是Flutter的新手,如果可能的话,它应该是一个简短的命令,并且我需要它用于Android应用程序。希望有人能帮助我,感谢您的帮助。
我曾经处于和你一样的情况,音频很难(所以要做好准备)。 在经历了四天的努力之后,我成功让我的背景音乐正常工作了(非常抱歉回答这么长,但那就是必须的)。希望你的不需要那么长时间:
首先,你需要将音频播放器添加到应用程序中:
import 'package:audioplayers/audio_cache.dart';
import 'package:audioplayers/audioplayers.dart';
在播放音频的页面中导入这些内容(我建议从主页(main.dart)播放背景音乐):
然后在 Class state 下,需要如下制作 audio-player 和 audio-cache:
class _YourMainPageNameState extends State<YourMainPageName> {
AudioPlayer player = AudioPlayer(); //add this
AudioCache cache = new AudioCache(); //and this
@override
Widget build [...]
每当您想播放音频时,请调用该方法:
player = await cache.loop('assets/yourMusicFileHere');
停止它的调用:
player.stop();
Future<bool> _willPopCallback() async {
player = await cache.loop('assets/yourMusicFileHere');
return true;
}
override
Widget build(BuildContext context) {
return WillPopScope(onWillPop: _willPopCallback, child: new Scaffold( [...] )
}
欢迎向我发送任何错误,我每天都会在 stackOverFlow 上多次出现,所以我会回答你的问题。
编辑: 我刚才意识到我犯了一个错误,我说WillPopScope可以用来启动应用程序时播放音乐,这是不正确的,WillPopScope是用于当您离开页面时。因此,它可以用于在用户离开应用程序时停止播放音乐。
现在要让音乐在应用程序打开时开始播放,我们必须像这样在构建小部件树时调用一个函数:
Future<bool> _willPopCallback() async {
player.stop(); //change this
return true;
}
openingActions() async { //add this
player = await cache.loop('assets/yourMusicFileHere.mp3'); //add this
} //add this
@override
Widget build(BuildContext context) {
openingActions();
return WillPopScope(onWillPop: _willPopCallback, child: new Scaffold( [...] )
bool isPlaying = false;
Future<bool> _willPopCallback() async { //change this whole thing
if(isPlaying == false) {
setState(() {
isPlaying = true;
});
player.stop();
}
return true;
}