Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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 创建共享类颤振_Flutter - Fatal编程技术网

Flutter 创建共享类颤振

Flutter 创建共享类颤振,flutter,Flutter,我不确定这是否可行,但使用SwiftUI,我有一个mediaplayer类,其中包含我所有的媒体播放器控件 我想知道是否有可能有一个颤振类文件,其中包含颤振无线电播放机和一个媒体播放机,可以改变音频源 我在使用旧的android应用程序时遇到的问题是,如果不创建一个全新的媒体播放器,我们就无法改变轨迹 我找不到任何关于如何执行此操作的示例代码 我的代码当前为: import 'package:flutter/material.dart'; import 'dart:async'; import

我不确定这是否可行,但使用SwiftUI,我有一个mediaplayer类,其中包含我所有的媒体播放器控件

我想知道是否有可能有一个颤振类文件,其中包含颤振无线电播放机和一个媒体播放机,可以改变音频源

我在使用旧的android应用程序时遇到的问题是,如果不创建一个全新的媒体播放器,我们就无法改变轨迹

我找不到任何关于如何执行此操作的示例代码

我的代码当前为:

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

import 'package:flutter/services.dart';
import 'package:flutter_radio_player/flutter_radio_player.dart';



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

class MyApp extends StatefulWidget {
  var playerState = FlutterRadioPlayer.flutter_radio_paused;

  var volume = 0.8;

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  int _currentIndex = 0;
  final List<Widget> _children = [
    new MyApp(),
  ];

  FlutterRadioPlayer _flutterRadioPlayer = new FlutterRadioPlayer();

  @override
  void initState() {
    super.initState();
    initRadioService();
  }

  Future<void> initRadioService() async {
    try {
      await _flutterRadioPlayer.init(
          "DRN1", "Live", "http://stream.radiomedia.com.au:8003/stream", "false");
    } on PlatformException {
      print("Exception occurred while trying to register the services.");
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter Radio Player Example'),
        ),
        body: Center(
          child: Column(
            children: <Widget>[
              StreamBuilder(
                  stream: _flutterRadioPlayer.isPlayingStream,
                  initialData: widget.playerState,
                  builder:
                      (BuildContext context, AsyncSnapshot<String> snapshot) {
                    String returnData = snapshot.data;
                    print("object data: " + returnData);
                    switch (returnData) {
                      case FlutterRadioPlayer.flutter_radio_stopped:
                        return RaisedButton(
                            child: Text("Start listening now"),
                            onPressed: () async {
                              await initRadioService();
                            });
                        break;
                      case FlutterRadioPlayer.flutter_radio_loading:
                        return Text("Loading stream...");
                      case FlutterRadioPlayer.flutter_radio_error:
                        return RaisedButton(
                            child: Text("Retry ?"),
                            onPressed: () async {
                              await initRadioService();
                            });
                        break;
                      default:
                        return Row(
                            crossAxisAlignment: CrossAxisAlignment.center,
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                              IconButton(
                                  onPressed: () async {
                                    print("button press data: " +
                                        snapshot.data.toString());
                                    await _flutterRadioPlayer.playOrPause();
                                  },
                                  icon: snapshot.data ==
                                      FlutterRadioPlayer
                                          .flutter_radio_playing
                                      ? Icon(Icons.pause)
                                      : Icon(Icons.play_arrow)),
                              IconButton(
                                  onPressed: () async {
                                    await _flutterRadioPlayer.stop();
                                  },
                                  icon: Icon(Icons.stop))
                            ]);
                        break;
                    }
                  }),
              Slider(
                  value: widget.volume,
                  min: 0,
                  max: 1.0,
                  onChanged: (value) => setState(() {
                    widget.volume = value;
                    _flutterRadioPlayer.setVolume(widget.volume);
                  })),
              Text("Volume: " + (widget.volume * 100).toStringAsFixed(0))
            ],
          ),
        ),

      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“dart:async”;
导入“包:flifter/services.dart”;
进口“包装:颤振无线电播放机/颤振无线电播放机.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了StatefulWidget{
var playerState=flatterRadioPlayer.flatter\u收音机\u暂停;
风险价值量=0.8;
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
int _currentIndex=0;
最终列表_子项=[
新建MyApp(),
];
FlatterRadioPlayer _flatterRadioPlayer=新的FlatterRadioPlayer();
@凌驾
void initState(){
super.initState();
initRadioService();
}
未来initRadioService()异步{
试一试{
等待(u player.init)(
“DRN1”,“现场”http://stream.radiomedia.com.au:8003/stream“,”假“);
}平台异常{
打印(“尝试注册服务时发生异常。”);
}
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:常量文本(“颤振无线电播放器示例”),
),
正文:中(
子:列(
儿童:[
StreamBuilder(
流:_.radioplayer.isPlayingStream,
initialData:widget.playerState,
建设者:
(BuildContext上下文,异步快照){
字符串returnData=snapshot.data;
打印(“对象数据:”+返回数据);
开关(返回数据){
箱子颤振无线电播放器。颤振无线电已停止:
返回上升按钮(
孩子:文本(“现在开始听”),
onPressed:()异步{
等待initRadioService();
});
打破
壳体颤振无线电播放器。颤振无线电加载:
返回文本(“加载流…”);
case FLIFT RADIOPLAYER.FLIFT_无线电_错误:
返回上升按钮(
子项:文本(“重试?”),
onPressed:()异步{
等待initRadioService();
});
打破
违约:
返回行(
crossAxisAlignment:crossAxisAlignment.center,
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
图标按钮(
onPressed:()异步{
打印(“按钮按下数据:”+
snapshot.data.toString());
等待,等待,等待,等待;
},
图标:snapshot.data==
无线电播放机
.颤振(收音机)(播放)
?图标(图标。暂停)
:Icon(Icons.play_箭头)),
图标按钮(
onPressed:()异步{
等待,停止();
},
图标:图标(图标。停止))
]);
打破
}
}),
滑块(
值:widget.volume,
分:0,,
最高:1.0,
一旦更改:(值)=>setState(){
widget.volume=值;
_设置音量(widget.volume);
})),
文本(“卷:”+(widget.Volume*100.toStringAsFixed(0))
],
),
),
),
);
}
}

请点击此处查看播放机作者。有了新版本的播放器,你可以做到这一点。 你只要打个电话就行了

_flutterRadioPlayer.setUrl('URL_HERE')
玩家将自动将旧流设置为停止,并启动新流。是的,您也可以在准备就绪时将其设置为自动播放。只需参考新版本中的文档即可