Flutter 创建共享类颤振
我不确定这是否可行,但使用SwiftUI,我有一个mediaplayer类,其中包含我所有的媒体播放器控件 我想知道是否有可能有一个颤振类文件,其中包含颤振无线电播放机和一个媒体播放机,可以改变音频源 我在使用旧的android应用程序时遇到的问题是,如果不创建一个全新的媒体播放器,我们就无法改变轨迹 我找不到任何关于如何执行此操作的示例代码 我的代码当前为:Flutter 创建共享类颤振,flutter,Flutter,我不确定这是否可行,但使用SwiftUI,我有一个mediaplayer类,其中包含我所有的媒体播放器控件 我想知道是否有可能有一个颤振类文件,其中包含颤振无线电播放机和一个媒体播放机,可以改变音频源 我在使用旧的android应用程序时遇到的问题是,如果不创建一个全新的媒体播放器,我们就无法改变轨迹 我找不到任何关于如何执行此操作的示例代码 我的代码当前为: import 'package:flutter/material.dart'; import 'dart:async'; import
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')
玩家将自动将旧流设置为停止,并启动新流。是的,您也可以在准备就绪时将其设置为自动播放。只需参考新版本中的文档即可