You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
4.0 KiB

import 'package:get/get.dart';
import 'package:qq_music/qq_music.dart';
/// QQ音乐服务适配器
class QqMusocService extends GetxService {
static QqMusocService get to => Get.find<QqMusocService>();
var isInitialized = false;
// 音乐服务实例
final QqMusic _qqMusic = QqMusic();
/// 初始化
@override
void onInit() {
super.onInit();
}
/// 登录QQ音乐
Future<Map<String, dynamic>> login() async {
try {
// 直接调用QQ音乐插件的登录方法
final result = await _qqMusic.login();
// 检查登录结果
if (result['success'] == true) {
isInitialized = true;
return result;
} else {
return {'success': false, 'error': result['error'] ?? '登录失败'};
}
} catch (e) {
return {'success': false, 'error': '登录异常: ${e.toString()}'};
}
}
/// 搜索歌曲
Future<Map<String, dynamic>> searchSongs({
required String keyword,
int searchType = 0, // SEARCH_TYPE_SONG
}) async {
try {
final result = await _qqMusic.searchSongs(
keyword: keyword,
searchType: searchType,
);
return result;
} catch (e) {
return {'success': false, 'error': '搜索失败: ${e.toString()}'};
}
}
/// 播放歌曲列表
Future<Map<String, dynamic>> playSongs({
required List<String> songMids,
int index = 0,
}) async {
try {
final result = await _qqMusic.playSongs(
songMids: songMids,
index: index,
);
return result;
} catch (e) {
return {'success': false, 'error': '播放失败: ${e.toString()}'};
}
}
/// 播放音乐
Future<Map<String, dynamic>> playMusic() async {
try {
final result = await _qqMusic.playMusic();
return result;
} catch (e) {
return {'success': false, 'error': '播放失败: ${e.toString()}'};
}
}
/// 暂停音乐
Future<Map<String, dynamic>> pauseMusic() async {
try {
final result = await _qqMusic.pauseMusic();
return result;
} catch (e) {
return {'success': false, 'error': '暂停失败: ${e.toString()}'};
}
}
/// 继续播放
Future<Map<String, dynamic>> resumeMusic() async {
try {
final result = await _qqMusic.resumeMusic();
return result;
} catch (e) {
return {'success': false, 'error': '继续播放失败: ${e.toString()}'};
}
}
/// 停止音乐
Future<Map<String, dynamic>> stopMusic() async {
try {
final result = await _qqMusic.stopMusic();
return result;
} catch (e) {
return {'success': false, 'error': '停止失败: ${e.toString()}'};
}
}
/// 下一首
Future<Map<String, dynamic>> skipToNext() async {
try {
final result = await _qqMusic.skipToNext();
return result;
} catch (e) {
return {'success': false, 'error': '下一首失败: ${e.toString()}'};
}
}
/// 上一首
Future<Map<String, dynamic>> skipToPrevious() async {
try {
final result = await _qqMusic.skipToPrevious();
return result;
} catch (e) {
return {'success': false, 'error': '上一首失败: ${e.toString()}'};
}
}
/// 获取播放状态
Future<Map<String, dynamic>> getPlaybackState() async {
try {
final result = await _qqMusic.getPlaybackState();
return result;
} catch (e) {
return {'success': false, 'error': '获取播放状态失败: ${e.toString()}'};
}
}
/// 获取当前播放歌曲
Future<Map<String, dynamic>> getCurrentSong() async {
try {
final result = await _qqMusic.getCurrentSong();
return result;
} catch (e) {
return {'success': false, 'error': '获取当前歌曲失败: ${e.toString()}'};
}
}
/// 获取播放时间
Future<Map<String, dynamic>> getPlayTime() async {
try {
final result = await _qqMusic.getPlayTime();
return result;
} catch (e) {
return {'success': false, 'error': '获取播放时间失败: ${e.toString()}'};
}
}
}