Flutter音频缓存播放插件cached_s5_audio的使用
Flutter音频缓存播放插件cached_s5_audio的使用
cached_s5_audio
cached_s5_audio
是一个用于 S5 CID 的简单缓存音频小部件。

使用
查看示例。
这是一个基于 s5 构建的库。有关更多详细信息,请参阅该库。
基本用法:
CachedS5Audio(
cid: cid!, // CID 字符串表示
s5: s5!, // S5 单例
)
示例代码
以下是一个完整的示例代码,展示了如何在 Flutter 应用程序中使用 cached_s5_audio
插件。
import 'package:cached_s5_audio/cached_s5_audio.dart';
import 'package:cached_s5_audio_exmaple/src/s5.dart';
import 'package:cached_s5_manager/cached_s5_manager.dart';
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
import 'package:s5/s5.dart';
void main() {
runApp(const Demo());
}
class Demo extends StatelessWidget {
const Demo({super.key});
// 这是你的应用的根组件。
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(
home: CachedS5AudioDemo(),
);
}
}
class CachedS5AudioDemo extends StatefulWidget {
const CachedS5AudioDemo({super.key});
[@override](/user/override)
State<CachedS5AudioDemo> createState() => _CachedS5AudioDemoState();
}
class _CachedS5AudioDemoState extends State<CachedS5AudioDemo> {
String? cid;
final TextEditingController _cidController = TextEditingController(
text: "z2H7G8Z25ajNkXqn3o1A5Eam7pmdPangcNk2VFViqM993fhxpDhg");
S5? s5;
Logger logger = Logger();
CachedS5Manager? cacheManager;
[@override](/user/override)
void initState() {
_initS5();
_initCache();
super.initState();
}
void _initCache() async {
cacheManager?.init();
}
void _initS5() async {
// 这是一个示例 S5 节点,使用自己的节点以获得最佳性能
s5 = await initS5("https://s5.jptr.tech", "hive", null);
cacheManager = CachedS5Manager(s5: s5!);
setState(() {}); // 更新 UI
}
void _submitCID() async {
if (s5 != null) {
setState(() {
cid = _cidController.text;
});
}
}
void _clearCache() async {
cacheManager?.clear();
}
void _clearImage() async {
setState(() {
cid = null;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: [
Row(
children: [
const Text("S5 状态:"),
(s5 == null)
? const CircularProgressIndicator()
: const Icon(Icons.check),
],
),
TextField(
controller: _cidController,
decoration: const InputDecoration(labelText: "CID: z2..."),
),
const SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _submitCID, child: const Text("提交 CID")),
ElevatedButton(
onPressed: _clearCache, child: const Text("清除缓存")),
ElevatedButton(
onPressed: _clearImage,
child: const Text("清除已加载的音频"))
],
),
const SizedBox(
height: 10,
),
(cid != null && s5 != null)
? CachedS5Audio(
cid: cid!,
s5: s5!,
)
: Container(),
],
),
);
}
}
更多关于Flutter音频缓存播放插件cached_s5_audio的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter音频缓存播放插件cached_s5_audio的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
cached_audio_player
是一个用于在 Flutter 应用中播放音频并支持缓存的插件。它可以帮助你在应用中播放网络音频文件,并且会将音频文件缓存到本地,以便在下次播放时不需要重新下载。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 cached_audio_player
依赖:
dependencies:
flutter:
sdk: flutter
cached_audio_player: ^0.1.0 # 请根据最新版本号进行替换
然后运行 flutter pub get
来安装插件。
基本使用方法
-
导入插件
import 'package:cached_audio_player/cached_audio_player.dart';
-
初始化播放器
你可以通过
CachedAudioPlayer
类来初始化播放器。final player = CachedAudioPlayer();
-
播放音频
使用
play
方法来播放网络音频文件。插件会自动缓存音频文件。await player.play('https://example.com/audio.mp3');
-
暂停和恢复播放
你可以使用
pause
和resume
方法来暂停和恢复播放。player.pause(); // 暂停播放 player.resume(); // 恢复播放
-
停止播放
使用
stop
方法来停止播放。player.stop();
-
释放资源
当你不再需要播放器时,记得释放资源。
player.dispose();
-
监听播放状态
你可以通过监听
player.state
来获取播放器的当前状态。player.state.listen((state) { print('Player state: $state'); });
-
获取当前播放位置
你可以使用
position
属性来获取当前播放的位置。Duration position = await player.position; print('Current position: $position');
-
设置音量
你可以通过
setVolume
方法来设置音量。player.setVolume(0.5); // 设置音量为 50%
-
跳转到指定位置
你可以使用
seek
方法来跳转到指定的播放位置。player.seek(Duration(seconds: 30)); // 跳转到 30 秒
示例代码
以下是一个简单的示例,展示了如何使用 cached_audio_player
播放网络音频文件:
import 'package:flutter/material.dart';
import 'package:cached_audio_player/cached_audio_player.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: AudioPlayerScreen(),
);
}
}
class AudioPlayerScreen extends StatefulWidget {
[@override](/user/override)
_AudioPlayerScreenState createState() => _AudioPlayerScreenState();
}
class _AudioPlayerScreenState extends State<AudioPlayerScreen> {
final player = CachedAudioPlayer();
bool isPlaying = false;
[@override](/user/override)
void dispose() {
player.dispose();
super.dispose();
}
Future<void> togglePlay() async {
if (isPlaying) {
await player.pause();
} else {
await player.play('https://example.com/audio.mp3');
}
setState(() {
isPlaying = !isPlaying;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Audio Player'),
),
body: Center(
child: ElevatedButton(
onPressed: togglePlay,
child: Text(isPlaying ? 'Pause' : 'Play'),
),
),
);
}
}