audio_player_handler.dart
1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import 'package:appframe/config/locator.dart';
import 'package:appframe/services/dispatcher.dart';
import 'package:appframe/services/player_service.dart';
import 'package:uuid/uuid.dart';
class AudioPlayHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(dynamic params) async {
if (params is! Map<String, dynamic>) {
throw Exception('参数错误');
}
final url = params['url'] as String;
final seek = params['seek'] as int? ?? 0;
// 暂时忽略
// final isBg = params['isBg'] as bool ?? false;
var playId = params['playId'] as String? ?? '';
if (playId.isEmpty) {
playId = Uuid().v4();
}
var playerService = getIt.get<PlayerService>();
var result = await playerService.playAudio(url, seek, playId);
if (!result) {
throw Exception('播放错误');
}
return {'playId': playId};
}
}
class AudioPauseHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(dynamic params) async {
return await getIt.get<PlayerService>().pauseAudio();
}
}
class AudioResumeHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(dynamic params) async {
return await getIt.get<PlayerService>().resumeAudio();
}
}
class AudioSeekHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(dynamic params) async {
if (params is! Map<String, dynamic>) {
throw Exception('参数错误');
}
final seek = params['seek'] as int;
return await getIt.get<PlayerService>().seekAudio(seek);
}
}
class AudioStopHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(dynamic params) async {
return await getIt.get<PlayerService>().stopAudio();
}
}
class AudioClearHandler extends MessageHandler {
@override
Future<dynamic> handleMessage(dynamic params) async {
await getIt.get<PlayerService>().clearAudio();
return true;
}
}