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: falseintegrations. - 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.
- 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.
- 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< rooms, {String newParticipantAction = 'autoAssignNewRoom'}) → Future<BreakoutParticipant> >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? 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> -
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>
Typedefs
-
HeartbeatViewerSession
= Future<
void> Function(ViewerSessionIdentity session) -
JoinViewerSession
= Future<
ViewerSessionIdentity> Function(String roomName, String? displayName) -
LeaveViewerSession
= Future<
void> Function(ViewerSessionIdentity session) - ModerationArea = String
-
PollViewerSession
= Future<
ViewerSessionStatus> Function(ViewerSessionIdentity session) -
RequestViewerPromotion
= Future<
void> Function(ViewerSessionIdentity session)