Flutter广播收听插件radio_browser_flutter的使用
Flutter广播收听插件radio_browser_flutter的使用
特性
包含以下端点的包装方法:
- 车站
- 国家
- 语言
- 标签
- 编解码器
- 服务器详细信息
开始使用
首先导入插件:
import 'package:radio_browser_flutter/radio_browser_flutter.dart';
在使用之前初始化 RadioBrowserClient
:
void main() {
RadioBrowserClient.initialize("YourAppName/1.0.0"); // 请确保User-Agent描述清晰
runApp(const MyApp());
}
使用示例
在应用程序中调用API的方法如下所示:
class HomePage extends StatelessWidget {
const HomePage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder(
future: RadioBrowserClient.instance.codecs.fetch(), // 获取编解码器列表
builder: ((context, AsyncSnapshot<List<Codec>> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator()); // 等待时显示加载指示器
}
if (snapshot.hasError) {
return Text(snapshot.error?.toString() ?? "Something went wrong"); // 错误处理
}
var data = snapshot.data!; // 获取数据
return ListView.builder(
itemCount: data.length, // 列表项数量
itemBuilder: ((context, index) {
return ListTile(title: Text(data[index].name)); // 显示每个编解码器名称
}),
);
}),
),
);
}
}
以上示例展示了如何获取并展示所有可用编解码器的名称。你可以根据需求调整示例代码以适应不同的API端点。
示例代码
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:radio_browser_flutter/radio_browser_flutter.dart';
void main() async {
await RadioBrowserClient.initialize(""); // 初始化客户端
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSwatch(
primarySwatch: Colors.blue,
).copyWith(
secondary: Colors.pink,
),
),
home: const HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder(
future: RadioBrowserClient.instance.codecs.fetch(), // 获取编解码器列表
builder: ((context, AsyncSnapshot<List<Codec>> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator()); // 等待时显示加载指示器
}
if (snapshot.hasError) {
return Text(snapshot.error?.toString() ?? "Something went wrong"); // 错误处理
}
var data = snapshot.data!; // 获取数据
return ListView.builder(
itemCount: data.length, // 列表项数量
itemBuilder: ((context, index) {
return ListTile(title: Text(data[index].name)); // 显示每个编解码器名称
}),
);
}),
),
);
}
}
更多关于Flutter广播收听插件radio_browser_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广播收听插件radio_browser_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何使用 radio_browser_flutter
插件在 Flutter 应用中收听广播的示例代码。这个插件允许你从 Radio Browser API 获取广播电台列表并播放它们。
首先,确保你的 Flutter 项目已经添加了对 radio_browser_flutter
插件的依赖。在你的 pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
radio_browser_flutter: ^latest_version # 请替换为最新版本号
然后运行 flutter pub get
来获取依赖。
接下来,我们编写一个示例应用来展示如何使用这个插件。
主应用代码 (main.dart)
import 'package:flutter/material.dart';
import 'package:radio_browser_flutter/radio_browser_flutter.dart';
import 'package:just_audio/just_audio.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Radio Browser Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: RadioBrowserScreen(),
);
}
}
class RadioBrowserScreen extends StatefulWidget {
@override
_RadioBrowserScreenState createState() => _RadioBrowserScreenState();
}
class _RadioBrowserScreenState extends State<RadioBrowserScreen> {
final RadioBrowser _radioBrowser = RadioBrowser();
final AudioPlayer _audioPlayer = AudioPlayer();
List<RadioStation> _radioStations = [];
RadioStation? _selectedStation;
@override
void initState() {
super.initState();
_fetchStations();
}
Future<void> _fetchStations() async {
try {
final List<RadioStation> stations = await _radioBrowser.fetchStations(
country: 'US', // 可根据需要修改国家代码
limit: 20,
);
setState(() {
_radioStations = stations;
});
} catch (e) {
print('Error fetching stations: $e');
}
}
void _playStation(RadioStation station) async {
setState(() {
_selectedStation = station;
});
await _audioPlayer.setUrl(station.streamUrl!);
_audioPlayer.play();
}
void _pauseStation() {
_audioPlayer.pause();
}
void _stopStation() {
_audioPlayer.stop();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Radio Browser Flutter Demo'),
),
body: _radioStations.isEmpty
? Center(child: CircularProgressIndicator())
: ListView.builder(
itemCount: _radioStations.length,
itemBuilder: (context, index) {
final RadioStation station = _radioStations[index];
return ListTile(
title: Text(station.name),
subtitle: Text(station.country),
onTap: () => _playStation(station),
);
},
),
floatingActionButton: Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
FloatingActionButton(
onPressed: _selectedStation != null ? _pauseStation : null,
tooltip: 'Pause',
child: Icon(Icons.pause),
),
SizedBox(height: 10),
FloatingActionButton(
onPressed: _stopStation,
tooltip: 'Stop',
child: Icon(Icons.stop),
),
],
),
);
}
}
说明
-
依赖管理:确保在
pubspec.yaml
中添加了radio_browser_flutter
和just_audio
依赖。just_audio
是一个强大的音频播放库,用于处理音频播放逻辑。 -
初始化:在
RadioBrowserScreen
的initState
方法中调用_fetchStations
函数来获取广播电台列表。 -
获取广播电台:
_fetchStations
函数使用RadioBrowser
类的fetchStations
方法来获取广播电台列表,并将结果存储在_radioStations
列表中。 -
播放控制:点击列表项时会调用
_playStation
函数,该函数设置_selectedStation
并使用AudioPlayer
播放电台。播放、暂停和停止功能分别通过_playStation
、_pauseStation
和_stopStation
方法实现。 -
UI:使用
ListView.builder
显示广播电台列表,并通过FloatingActionButton
控制播放状态。
运行这个示例应用,你将能够看到一个广播电台列表,点击列表项可以播放选中的电台,并通过浮动操作按钮控制播放状态。