methods/utils/headless/headless library

Headless helpers: everything an app-owned Flutter UI needs from a MediaSFU room, without rendering any MediaSFU UI.

See HEADLESS_GUIDE.md for the full reference and for what is deliberately not here — several React helpers depend on browser APIs (canvas capture, MediaPipe, hls.js) that have no Flutter equivalent and are documented as platform gaps rather than silently omitted.

Classes

BreakoutState
CaptureLimits
ChatMessage
FocusModeState
HeadlessActionResult
MediaPermission
MediaPermissions
MediaPermissionsParameters
MediasfuHeadlessController
ChangeNotifier bridge for returnUI: false integrations.
MediaStreamsParameters
What the parameter bag must supply for media resolution.
ModerationParameters
ModerationPermissions
ParticipantMediaState
What one participant is currently publishing.
ParticipantStateParameters
What the parameter bag must supply for roster state.
PendingApprovalPerson
PendingApprovals
PollState
PresenceCheck
RecordingCapabilities
RecordingNoticeState
RecordingState
ResolvedMedia
A remote participant's video, with the producer it came from.
RoomActionsParameters
RoomReadiness
Readiness, with the reason when it is not ready.
RoomReadinessParameters
What the parameter bag must supply to judge readiness.
ScreenShareState
Which screen share to render, and whose it is.
SessionTimer
TranslationPreference
TranslationState
ViewerSessionHandle
ViewerSessionIdentity
ViewerSessionProvider
ViewerSessionSnapshot
ViewerSessionStatus
VirtualBackgroundState
WhiteboardState

Functions

assignParticipantToBreakoutRoom(MediasfuParameters parameters, {required String name, int? room, String newParticipantAction = 'autoAssignNewRoom'}) Future<HeadlessActionResult>
confirmStillHere(MediasfuParameters parameters) HeadlessActionResult
createRoomPoll(MediasfuParameters parameters, {required String question, required List<String> options, String type = 'custom'}) Future<HeadlessActionResult>
createViewerSession({required ViewerSessionProvider provider, required String roomName, String? displayName, Duration pollInterval = const Duration(seconds: 5), Duration heartbeatInterval = const Duration(seconds: 30), void onChange(ViewerSessionSnapshot)?}) ViewerSessionHandle
disableParticipantVideo(ModerationParameters parameters, {String id = '', String name = ''}) Future<HeadlessActionResult>
endRoomPoll(MediasfuParameters parameters, {required String pollId}) Future<HeadlessActionResult>
flipCamera(MediasfuParameters parameters) Future<HeadlessActionResult>
getAudioGridComponents(MediaStreamsParameters parameters) List<Widget>
Prepared audio renderers. Render every entry; slicing this list makes off-page participants inaudible while they remain in the room.
getBreakoutState(MediasfuParameters parameters) BreakoutState
getCaptureLimits(MediasfuParameters parameters, {ProducerKind kind = ProducerKind.video}) CaptureLimits
Returns the camera capture ceiling published by the room.
getChatMessages(MediasfuParameters parameters, {String scope = 'all', String withPerson = ''}) List<ChatMessage>
getCurrentParams(MediasfuParameters parameters) MediasfuParameters
Purely reads the latest Flutter parameter snapshot.
getFocusModeState(MediasfuParameters parameters) FocusModeState
getLocalAudioStream(MediaStreamsParameters parameters) MediaStream?
The live local microphone stream, or null while audio is off.
getLocalVideoStream(MediaStreamsParameters parameters) MediaStream?
The local camera, or null when it is off.
getMediaPermissions(MediaPermissionsParameters parameters) MediaPermissions
getModerationPermissions(ModerationParameters parameters) ModerationPermissions
getPendingApprovals(MediasfuParameters parameters) PendingApprovals
getPollState(MediasfuParameters parameters) PollState
getPresenceCheck(MediasfuParameters parameters) PresenceCheck
getRecordingCapabilities(MediasfuParameters parameters) RecordingCapabilities
getRecordingNotice(MediasfuParameters parameters) RecordingNoticeState
getRecordingState(MediasfuParameters parameters) RecordingState
getRemoteAudioStreams(MediaStreamsParameters parameters) List<ResolvedMedia>
Remote audio producers, de-duplicated by producer id.
getRemoteVideoStreams(MediaStreamsParameters parameters) List<ResolvedMedia>
Remote cameras, de-duplicated by producer id and free of the self marker.
getRoomHost(ParticipantStateParameters parameters) Participant?
Who the room considers the host, or null.
getRoomReadiness(RoomReadinessParameters parameters) RoomReadiness
Judge whether the room can carry media.
getScreenShareStream(MediaStreamsParameters parameters) ScreenShareState
The active screen share, local or remote.
getSessionTimer(MediasfuParameters parameters) SessionTimer
getTranslationState(MediasfuParameters parameters) TranslationState
getVirtualBackgroundState(MediasfuParameters parameters) VirtualBackgroundState
getWhiteboardState(MediasfuParameters parameters) WhiteboardState
leaveRoom(RoomActionsParameters parameters, {bool ban = false, bool endRoomOnHostExit = true}) Future<HeadlessActionResult>
listParticipantMediaStates(ParticipantStateParameters parameters) List<ParticipantMediaState>
The whole roster, ready to render.
muteEveryone(ModerationParameters parameters, {String kind = 'audio'}) Future<HeadlessActionResult>
muteParticipant(ModerationParameters parameters, {String id = '', String name = ''}) Future<HeadlessActionResult>
pauseRoomRecording(MediasfuParameters parameters) Future<HeadlessActionResult>
removeParticipant(ModerationParameters parameters, {String id = '', String name = ''}) Future<HeadlessActionResult>
resolveParticipantMediaState(ParticipantStateParameters parameters, Participant participant) ParticipantMediaState
One participant's media state.
respondToParticipantRequest(ModerationParameters parameters, {String requestId = '', String name = '', required bool approve}) Future<HeadlessActionResult>
respondToWaitingParticipant(ModerationParameters parameters, {String id = '', String name = '', required bool admit}) Future<HeadlessActionResult>
resumeRoomRecording(MediasfuParameters parameters) Future<HeadlessActionResult>
runMediaControl(RoomActionsParameters parameters, FutureOr<void> action()) Future<HeadlessActionResult>
sendChatMessage(RoomActionsParameters parameters, String message, {List<String> receivers = const <String>[], bool group = true}) Future<HeadlessActionResult>
setBreakoutRooms(MediasfuParameters parameters, List<List<BreakoutParticipant>> rooms, {String newParticipantAction = 'autoAssignNewRoom'}) Future<HeadlessActionResult>
setCoHost(ModerationParameters parameters, String name, {List<ModerationArea> areas = const <ModerationArea>['media', 'participants']}) Future<HeadlessActionResult>
setParticipantMedia(ModerationParameters parameters, {String id = '', String name = '', required String kind}) Future<HeadlessActionResult>
setRoomMediaPolicy(MediasfuParameters parameters, {String? audio, String? video, String? screenshare, String? chat}) Future<HeadlessActionResult>
setTranslationPreference(MediasfuParameters parameters, {String? language, String? speakerId, bool wantOriginal = false}) HeadlessActionResult
startRoomRecording(MediasfuParameters parameters) Future<HeadlessActionResult>
startWhiteboard(MediasfuParameters parameters, {List<WhiteboardUser>? users}) Future<HeadlessActionResult>
stopBreakoutRooms(MediasfuParameters parameters) Future<HeadlessActionResult>
stopParticipantScreenShare(ModerationParameters parameters, {String id = '', String name = ''}) Future<HeadlessActionResult>
stopRoomRecording(MediasfuParameters parameters) Future<HeadlessActionResult>
stopWhiteboard(MediasfuParameters parameters) Future<HeadlessActionResult>
switchCamera(MediasfuParameters parameters, String deviceId) Future<HeadlessActionResult>
switchMicrophone(MediasfuParameters parameters, String deviceId) Future<HeadlessActionResult>
voteInRoomPoll(MediasfuParameters parameters, {required String pollId, required int optionIndex}) Future<HeadlessActionResult>