controlMedia function
- ControlMediaOptions options
Handles the controlMedia socket event. Called when media needs to be controlled due to focus mode.
Example:
socket.on("controlMedia", (data) async {
await controlMedia(ControlMediaOptions(
data: ControlMediaData.fromMap(data),
showAlert: showAlert,
clickAudio: clickAudio,
clickVideo: clickVideo,
audioAlreadyOn: audioAlreadyOn,
videoAlreadyOn: videoAlreadyOn,
));
});
Implementation
Future<void> controlMedia(ControlMediaOptions options) async {
try {
final data = options.data;
if (data.action == 'mute') {
if (data.type == 'audio' &&
options.audioAlreadyOn &&
options.clickAudio != null) {
options.clickAudio!();
} else if (data.type == 'video' &&
options.videoAlreadyOn &&
options.clickVideo != null) {
options.clickVideo!();
}
if (options.showAlert != null && data.reason != null) {
final mediaType = data.type == 'audio' ? 'microphone' : 'camera';
options.showAlert!(
message: 'Your $mediaType has been muted. ${data.reason}',
type: 'info',
duration: 3000,
);
}
}
} catch (e) {
debugPrint('Error handling controlMedia: $e');
}
}