Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在flatter中播放音频文件_Flutter_Dart_Audio - Fatal编程技术网

Flutter 在flatter中播放音频文件

Flutter 在flatter中播放音频文件,flutter,dart,audio,Flutter,Dart,Audio,嘿,我想要我的应用程序背景音乐,因为我需要知道,如何在颤振中播放音频文件,我已经导入了许多Adio软件包,但没有人真正工作,我是颤振游戏xD的新手,如果可能的话,它应该是短命令,我需要一个android应用程序。我希望有人能帮助我,谢谢你的帮助 我的处境和你一样。而且音频很难(所以要做好准备)。 在^4天的工作之后,我确实让我的背景音乐开始工作(很抱歉回答得太长了,但这是必须的)。希望你不会花那么长时间: 首先,您需要向应用程序添加音频播放器: import 'package:audioplay

嘿,我想要我的应用程序背景音乐,因为我需要知道,如何在颤振中播放音频文件,我已经导入了许多Adio软件包,但没有人真正工作,我是颤振游戏xD的新手,如果可能的话,它应该是短命令,我需要一个android应用程序。我希望有人能帮助我,谢谢你的帮助


我的处境和你一样。而且音频很难(所以要做好准备)。 在^4天的工作之后,我确实让我的背景音乐开始工作(很抱歉回答得太长了,但这是必须的)。希望你不会花那么长时间:

首先,您需要向应用程序添加音频播放器:

import 'package:audioplayers/audio_cache.dart';
import 'package:audioplayers/audioplayers.dart';
在播放音频的页面中导入这些内容(我建议从主页(main.dart)播放背景音乐)

然后在类状态下,您需要创建音频播放器和音频缓存,如下所示:

要阻止它,请拨打:

player.stop();
如果你想让音乐从应用程序打开的那一点开始,用WillPopScope将支架包裹起来,如下所示:

Future\u willPopCallback()异步{
player=wait cache.loop('assets/yourMusicFileHere');
返回true;
}
推翻
小部件构建(构建上下文){
return-WillPopScope(onWillPop:_-willPopCallback,child:newscaffold([…]))
}
请随时给我发送任何错误,我将在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( [...] )
Future\u willPopCallback()异步{
player.stop();//更改此设置
返回true;
}
openingActions()异步{//添加此
player=wait cache.loop('assets/yourMusicFileHere.mp3');//添加此
}//添加这个
@凌驾
小部件构建(构建上下文){
openingActions();
return-WillPopScope(onWillPop:_-willPopCallback,child:newscaffold([…]))
您可能会遇到播放两次音乐的问题,然后需要在播放音乐时添加安全检查,如下所示:

 bool isPlaying = false;

 Future<bool> _willPopCallback() async { //change this whole thing
    if(isPlaying == false) {
      setState(() { 
        isPlaying = true;
      });
      player.stop();
    }
   return true;
  }
bool显示=false;
Future _willPopCallback()async{//改变这一切
如果(显示==假){
设置状态((){
isplay=true;
});
player.stop();
}
返回true;
}
  • 谢谢-托拜厄斯

老兄,在比尔·盖茨的模式下,你帮了我很多,但我仍然有一个问题,我在帖子中放了两个截图,如果我在一个按钮中使用_willPopCallback(),它会工作,但是如果我按照你说的“return WillPopScope(onWillPop:_willPopCallback)”,它不会工作,我想原因是它必须是_willPopCallback(),但如果执行此操作,则会出现错误“无法将参数类型“Future”指定给参数类型“Future Function()”也许你可以用你的比尔·盖茨的大脑来修复它,我爱你xDI刚刚编辑了我的第一个答案。我意识到我说的是,当用户离开应用程序时暂停音乐时,WillPopScope可以立即播放音乐。至于willPopCallback的问题,我不是100%确定(我不能得到同样的错误)。但是试着看看这个问题,我不确定这是不是同一个问题,但它可能会有帮助。否则,只需尝试一下usale错误破解:在终端中运行Flutter clean并重新打开项目。请随时与我联系。现在,如果我加载我的应用程序,它可以工作,但如果我按下一个按钮,背景音乐就会重新启动,我会从我的actuell代码中发布一个屏幕,我想nk willpopcallback方法不正确或我有什么错误尝试将“isplay”设置为默认值,或在应用程序打开时背景音乐开始播放时,在“openingActions”中将其设置为true。这是因为音乐开始播放,但“isplay”没有,然后“next”bg音乐开始播放,因为“isplay”未打开。我也很好奇这个按钮是做什么的?(如果它是一个关闭背景音乐的按钮,我可以帮你)我为这个问题开始了一个新的问题也许如果你得到了解决方案,你可以评论它,你帮了我很多,谢谢你
Future<bool> _willPopCallback() async {
    player = await cache.loop('assets/yourMusicFileHere');
    return true;
  }

override
  Widget build(BuildContext context) {
return WillPopScope(onWillPop: _willPopCallback, child: new Scaffold( [...] )
}
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;
  }