Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Firebase 颤振音频插件无法与我的音乐链接一起使用_Firebase_Flutter_Android Mediaplayer_Avplayer - Fatal编程技术网

Firebase 颤振音频插件无法与我的音乐链接一起使用

Firebase 颤振音频插件无法与我的音乐链接一起使用,firebase,flutter,android-mediaplayer,avplayer,Firebase,Flutter,Android Mediaplayer,Avplayer,希望有人正面临我的问题,或者能提供一个解决方案。我使用firebase保存和播放我的音乐。我的数据库项目中的以下流式链接与AudioManager()或AudioPlayer插件()不兼容,我也没有找到任何其他插件可以正常工作。老实说,这将是伟大的与AudioManager插件一起工作。我还试图在这两个插件提供商项目中制造问题,但目前没有任何成功 我面临的问题: 功能停止功能无法识别停止。“上一个”和“下一个”以及“播放暂停”只在延迟时起作用。在提供的示例中,im使用AudioManager插件

希望有人正面临我的问题,或者能提供一个解决方案。我使用firebase保存和播放我的音乐。我的数据库项目中的以下流式链接与AudioManager()或AudioPlayer插件()不兼容,我也没有找到任何其他插件可以正常工作。老实说,这将是伟大的与AudioManager插件一起工作。我还试图在这两个插件提供商项目中制造问题,但目前没有任何成功

我面临的问题: 功能停止功能无法识别停止。“上一个”和“下一个”以及“播放暂停”只在延迟时起作用。在提供的示例中,im使用AudioManager插件

在提供的示例中,我们有一个水平列表,当您按下右上角的按钮时,我试图停止音乐。使用流媒体链接无法识别任何内容。它忽略了停止歌曲。另外,在进入下一首歌曲时有一点延迟

如果您将音频链接更改为带有文件结尾的链接,则停止歌曲效果非常好,延迟也会减少在我的例子中,更重要的是停止链接源而不停止文件结尾

var audioFiles = [
    "https://docs.google.com/uc?export=open&id=1SaJWqfQuHnFtL7uqrzfYG31hzOnqDM3r",
    "https://docs.google.com/uc?export=open&id=1FZkFMjQyWguAl0RMAsYDEZ07c_Qf7gjz",
    "https://docs.google.com/uc?export=open&id=1GqrwQ3eRuiil0p-Na_R1tMAvggp9YrbH",
  ];
如果您使用的链接以文件类型结尾,如以下示例所示,则一切正常,不会延迟:

var audioFiles = [
    "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",
    "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-2.mp3",
    "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-3.mp3"
  ];
要复制的代码:

import 'package:audio_manager/audio_manager.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int currentIndex = 0;

  @override
  Widget build(BuildContext context) {
    // Page selector for tab list
    void _selectPage(int index) {
      print('page index: $index');
      setState(() {
        currentIndex = index;
      });
    }

    // Routes list for tab navigation Android
    final List<Widget> _pages = [
      ScreenA(),
      ScreenB(func: _selectPage),
    ];

    return Scaffold(
      appBar: AppBar(),
      body: _pages[currentIndex],
      bottomNavigationBar: SafeArea(
        child: BottomNavigationBar(
          onTap: _selectPage,
          iconSize: 22,
          currentIndex: currentIndex,
          type: BottomNavigationBarType.fixed,
          items: [
            BottomNavigationBarItem(
              backgroundColor: Theme.of(context).primaryColor,
              icon: Icon(Icons.description),
              label: 'ScreenA',
            ),
            BottomNavigationBarItem(
                backgroundColor: Theme.of(context).primaryColor,
                icon: Icon(Icons.ac_unit_outlined),
                label: 'ScreenB'),
          ],
        ),
      ),
    );
  }
}

class ScreenA extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text('HOME'),
    );
  }
}

class ScreenB extends StatefulWidget {
  Function func;
  ScreenB({Key key, @required this.func}) : super(key: key);
  @override
  _ScreenBState createState() => _ScreenBState();
}

var audioFiles = [
    "https://docs.google.com/uc?export=open&id=1SaJWqfQuHnFtL7uqrzfYG31hzOnqDM3r",
    "https://docs.google.com/uc?export=open&id=1FZkFMjQyWguAl0RMAsYDEZ07c_Qf7gjz",
    "https://docs.google.com/uc?export=open&id=1GqrwQ3eRuiil0p-Na_R1tMAvggp9YrbH",
  ];
var audioIndex = 0;

class _ScreenBState extends State<ScreenB> {

  //var _controller = PageController();
  PlayMode playMode = AudioManager.instance.playMode;

  var globalIndex =0;

  @override
  void initState() {
    // TODO: implement initState
    
    List<AudioInfo> _list = [];
    for (var i = 0; i < audioFiles.length; i++) {
      _list.add(AudioInfo(audioFiles[i], coverUrl: '', desc: '', title: ''));
    }

    print(_list);

    AudioManager.instance.audioList = _list;
    //AudioManager.instance.intercepter = true;
    AudioManager.instance.play(auto: true);

    super.initState();
  }


@override
void dispose() {
    // TODO: implement dispose
   // AudioManager.instance.release();
    super.dispose();
  }

  var lastPage =0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        actions: [
          IconButton(
            icon: Icon(Icons.close),
            onPressed: () {
              AudioManager.instance.stop();
              widget.func(0);
            },
          ),
        ],
      ),
      body: PageView.custom(
          onPageChanged: (page){
            if(page != lastPage){
              if(lastPage < page){
                print('swipe right');
                lastPage = page;
                setState(() {
                //audioIndex = page;
                AudioManager.instance.next();
                });
              } else{
                print('swipe left');
                lastPage = page;
              }
            }
          },
          //controller: _controller,
          physics: PageScrollPhysics(),
          scrollDirection: Axis.horizontal,
          childrenDelegate: SliverChildBuilderDelegate((ctx, pageIndex) =>
              // GestureDetector(
              //     onPanUpdate: (details) {
              //       if (details.delta.dx < 0) {
              //         _controller.nextPage(
              //             duration: Duration(milliseconds: 200),
              //             curve: Curves.easeInOut);

              //         setState(() {
              //           //audioIndex = pageIndex;
              //           AudioManager.instance.next();
              //         });
                      
              //       }
              //     },
                  //child: 
                  Center(
                      child: Container(
                          width: 200,
                          height: 200,
                          color: Colors.red,
                          child: Text(audioFiles[audioIndex]))))),
    );
  }
}
import'包:audio_manager/audio_manager.dart';
导入“package:flatter/signatures.dart”;
进口“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:MyHomePage(),
);
}
}
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
int currentIndex=0;
@凌驾
小部件构建(构建上下文){
//选项卡列表的页面选择器
void\u选择页面(整数索引){
打印(“页面索引:$index”);
设置状态(){
currentIndex=索引;
});
}
//用于选项卡导航的路由列表
最终列表_页=[
ScreenA(),
屏幕B(功能:选择页面),
];
返回脚手架(
appBar:appBar(),
正文:_页[当前索引],
底部导航栏:安全区域(
子项:底部导航栏(
onTap:\u选择页面,
iconSize:22,
currentIndex:currentIndex,
类型:BottomNavigationBarType.fixed,
项目:[
底部导航气压计(
背景色:主题。背景色,
图标:图标(图标.说明),
标签:“ScreenA”,
),
底部导航气压计(
背景色:主题。背景色,
图标:图标(图标。ac_单位概述),
标签:'ScreenB'),
],
),
),
);
}
}
类ScreenA扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回容器(
child:Text('HOME'),
);
}
}
类ScreenB扩展了StatefulWidget{
函数func;
ScreenB({Key Key,@required this.func}):super(Key:Key);
@凌驾
_ScreenBState createState()=>\u ScreenBState();
}
var音频文件=[
"https://docs.google.com/uc?export=open&id=1SaJWqfQuHnFtL7uqrzfYG31hzOnqDM3r",
"https://docs.google.com/uc?export=open&id=1FZkFMjQyWguAl0RMAsYDEZ07c_Qf7gjz",
"https://docs.google.com/uc?export=open&id=1GqrwQ3eRuiil0p-Na_R1tMAvggp9YrbH“,
];
var听力指数=0;
类_ScreenBState扩展状态{
//var_controller=PageController();
PlayMode PlayMode=AudioManager.instance.PlayMode;
var globalIndex=0;
@凌驾
void initState(){
//TODO:实现initState
列表_List=[];
对于(var i=0;i
//手势检测器(
//onPanUpdate:(详细信息){
//如果(details.delta.dx<0){
//_controller.nextPage(
//持续时间:持续时间(毫秒:200),
//曲线:Curves.easeInOut);
//设置状态(){
////audioIndex=pageIndex;
//AudioManager.instance.next();
//         });
//       }