< Flutter UIKit />
UTD Audio Room Kit
सीट, रियल-टाइम चैट और मॉडरेशन के साथ ड्रॉप-इन लाइव ऑडियो रूम।
import 'package:utd_audio_room_kit/utd_audio_room_kit.dart';
UTDAudioRoom(
appId: '<utd-app-id>',
appKey: '<utd-app-key>',
userId: 'user123',
userName: 'John Doe',
roomId: 'room456',
roomOwnerId: 'owner789',
);Drop-in
पूरा UI
0
बैकएंड सर्वर
EN · AR
बिल्ट-इन i18n
PiP
+ minimize
< utd_audio_room_kit />
मुख्य विशेषताएँ
LiveKit और UTD Stream Engine से संचालित, लाइव ऑडियो-रूम अनुभवों के लिए एक संपूर्ण, अनुकूलन-योग्य Flutter पैकेज। ड्रॉप-इन रूम UI के साथ सीट मैनेजमेंट, बोलने की रिक्वेस्ट, मेंबर लिस्ट, रियल-टाइम चैट, मीडिया कंट्रोल, minimize/PiP और पूरा होस्ट/एडमिन मॉडरेशन — और किसी बैकएंड टोकन सर्वर की ज़रूरत नहीं।
ड्रॉप-इन ऑडियो रूम UI — कोई अतिरिक्त कोड नहीं
सीट मैनेजमेंट: लेना, छोड़ना, बदलना, लॉक, अनलॉक, kick, mute, swap
अप्रूव/रिजेक्ट के साथ बोलने-की-रिक्वेस्ट क्यू
होस्ट/एडमिन एक्शन के साथ मेंबर लिस्ट (mute, kick, इनवाइट, ban, प्रमोट/डिमोट)
बैचिंग और डीडुप के साथ रियल-टाइम डेटा-चैनल चैट
ब्लूटूथ-वरीयता वाली रूटिंग के साथ माइक और स्पीकर कंट्रोल
स्तरबद्ध रीकनेक्शन (लाइट सिंक <15s, फ़ुल सिंक <60s)
फ़्लोटिंग ओवरले और Android OS Picture-in-Picture में minimize
थीम कस्टमाइज़ेशन और बिल्ट-इन i18n (EN/AR)
पूरे सेक्शन का रिप्लेसमेंट (हेडर, मैसेज, कंट्रोल, बैकग्राउंड, सीट)
कोई बैकएंड टोकन सर्वर नहीं — appKey-आधारित टोकन फ़्लो
< utd_audio_room_kit />
शुरू करें
इंस्टॉल करें
flutter pub add utd_audio_room_kit< utd_audio_room_kit />
API संदर्भ
Main widget
The drop-in prebuilt audio-room widget that hosts the full UI and connection lifecycle.
UTDAudioRoomwidgetconst UTDAudioRoom({required String appId, required String appKey, required String userId, required String userName, required String roomId, required String roomOwnerId, Set<String> adminIds, UTDAudioRoomConfig config, List<UTDRoomMode> modes, UTDRoomController? controller, ...})Prebuilt audio-room widget. Mints a token directly from the engine with the publishable appKey (no backend), connects to LiveKit, and renders seats, chat and controls. Self-upgrades admins post-join.
पैरामीटर
appIdStringआवश्यकUTD Stream Engine app ID.
appKeyStringआवश्यकPublishable app key (no backend); used to mint tokens via X-App-Key. The server secret never ships.
userIdStringआवश्यकLocal user identity.
userNameStringआवश्यकLocal user display name.
roomIdStringआवश्यकRoom name to join.
roomOwnerIdStringआवश्यकIdentity of the room owner; the owner joins as host.
adminIdsSet<String>डिफ़ॉल्ट = const {}Identities the app treats as admins at join.
adminIdsResolverFuture<Set<String>> Function()?डिफ़ॉल्ट = nullAsync admin-list source; triggers a non-blocking self-upgrade if it lists the local user.
adminIdsNowSet<String> Function()?डिफ़ॉल्ट = nullSync admin-list probe used at token time without waiting.
layoutModeStringडिफ़ॉल्ट = '3'Room mode id selecting the seat layout / seat count.
configUTDAudioRoomConfigडिफ़ॉल्ट = const UTDAudioRoomConfig()Behavior, theming and custom-widget configuration.
modesList<UTDRoomMode>डिफ़ॉल्ट = const []Custom room modes registered on the controller.
controllerUTDRoomController?डिफ़ॉल्ट = nullOptional externally-owned controller (e.g. when restoring from minimize).
onControllerReadyvoid Function(UTDRoomController)?डिफ़ॉल्ट = nullCalled once the controller is created/attached.
onConnectionChangedvoid Function(bool isConnected)?डिफ़ॉल्ट = nullFired on connect success/failure.
onSeatTapvoid Function(int index, SeatState seat)?डिफ़ॉल्ट = nullCalled when a seat is tapped.
onSeatChangedvoid Function(List<SeatState> seats)?डिफ़ॉल्ट = nullCalled whenever seat state changes.
onConnectErrorvoid Function(Object error, StackTrace)?डिफ़ॉल्ट = nullCalled when the initial connect fails.
Room controller
Top-level controller owning connection, sub-controllers, roles, bans and speaker flows.
UTDRoomControllerconstructorUTDRoomController()Creates the controller and its seat, media, chat, minimize and PiP sub-controllers. Usually created internally by UTDAudioRoom.
initApimethodvoid initApi({String baseUrl, String tokenBaseUrl, String? appId, required String appKey})Initializes the engine and token API clients. Must be called before connect/generateToken. Token issuance and in-room ops use different hosts.
पैरामीटर
baseUrlStringडिफ़ॉल्ट = UTDApiClient.defaultBaseUrlIn-room engine host for seat/speaker/ban/role calls.
tokenBaseUrlStringडिफ़ॉल्ट = UTDApiClient.defaultTokenBaseUrlEdge host used for token generation.
appIdString?डिफ़ॉल्ट = nullEngine app ID.
appKeyStringआवश्यकPublishable app key sent as X-App-Key for minting.
connectmethodasyncFuture<void> connect({required String url, required String token, int seatCount = 9, bool enableMicOnJoin = false, bool useSpeaker = true, Map<String,String> userAttributes, String? roomName})Connects to the LiveKit room with the given url/token, initializes seats, wires data/role/ban/chat-lock handlers, and optionally enables the mic and speaker.
पैरामीटर
urlStringआवश्यकLiveKit server URL.
tokenStringआवश्यकLiveKit access token.
seatCountintडिफ़ॉल्ट = 9Number of seats to initialize.
enableMicOnJoinboolडिफ़ॉल्ट = falsePublish the local mic on connect.
useSpeakerboolडिफ़ॉल्ट = truePrefer Bluetooth/loudspeaker output on join.
userAttributesMap<String,String>डिफ़ॉल्ट = const {}Cosmetic LiveKit participant attributes (avatar/frame/etc.).
roomNameString?डिफ़ॉल्ट = nullRoom name used for seat API calls.
रिटर्न मान: Future<void>
generateTokenmethodasyncFuture<UTDTokenResponse> generateToken({required String identity, required String roomName, required String roomOwnerId, String role = 'audience', String? name, int? seatCount, String? seatMode, int? hostSeat, String? modeId, ...})Requests a LiveKit token from the engine and applies the returned per-user bearer to the in-room clients. Throws UTDBannedException on a 403 banned response.
पैरामीटर
identityStringआवश्यकUser identity.
roomNameStringआवश्यकRoom name.
roomOwnerIdStringआवश्यकRoom owner identity.
typeStringडिफ़ॉल्ट = 'audio_room'Room type.
roleStringडिफ़ॉल्ट = 'audience'Requested role (host/admin/audience).
nameString?डिफ़ॉल्ट = nullDisplay name.
seatCountint?डिफ़ॉल्ट = nullInitial seat count (host only).
modeIdString?डिफ़ॉल्ट = nullRoom mode id (host only).
रिटर्न मान: Future<UTDTokenResponse>
leavemethodasyncFuture<void> leave()Leaves the room: tears down listeners, drains any pending mic publish, disconnects LiveKit, and resets minimize/PiP state.
रिटर्न मान: Future<void>
changeRolemethodasyncFuture<UTDRoleChangeResult> changeRole({required String targetIdentity, required String role})Changes a participant's role (owner-only; server returns 403 otherwise). Optimistically caches the result; throws on REST error.
पैरामीटर
targetIdentityStringआवश्यकIdentity whose role changes.
roleStringआवश्यकNew role (host/admin/guest/audience).
रिटर्न मान: Future<UTDRoleChangeResult>
banUsermethodasyncFuture<bool> banUser(String identity, {String? reason, int? durationSeconds, bool global = false})Bans a user. Room-scoped by default; pass global true for a project-wide ban and durationSeconds null for permanent. Returns true on success.
पैरामीटर
identityStringआवश्यकUser to ban.
reasonString?डिफ़ॉल्ट = nullOptional ban reason.
durationSecondsint?डिफ़ॉल्ट = nullBan duration; null = permanent.
globalboolडिफ़ॉल्ट = falseTrue for a project-wide ban.
रिटर्न मान: Future<bool>
lockCommentsmethodasyncFuture<bool> lockComments()Locks room chat so only host/admin may send (host/admin-only). State is confirmed by the server broadcast, not set optimistically.
रिटर्न मान: Future<bool>
requestToSpeakmethodasyncFuture<Map<String,dynamic>?> requestToSpeak()Audience requests to speak (request mode). Returns the API result map, or null on error / when not ready.
रिटर्न मान: Future<Map<String,dynamic>?>
inviteToSpeakmethodasyncFuture<Map<String,dynamic>?> inviteToSpeak(String targetIdentity, {int? seatIndex})Host/admin invites a user to speak, optionally targeting a specific seat. Returns the API result map or null.
पैरामीटर
targetIdentityStringआवश्यकIdentity to invite.
seatIndexint?डिफ़ॉल्ट = nullTarget seat the invitee is seated on if accepted.
रिटर्न मान: Future<Map<String,dynamic>?>
isConnectedgetterbool get isConnectedTrue when the room connection state is connected.
रिटर्न मान: bool
isHostOrAdmingetterbool get isHostOrAdminWhether the local participant's role is host or admin.
रिटर्न मान: bool
participantsStreamgetterasyncStream<List<UTDParticipant>> get participantsStreamStream of all room participants, emitting on join/leave/attribute/metadata changes.
रिटर्न मान: Stream<List<UTDParticipant>>
roleChangeStreamgetterasyncStream<UTDRoleChangeEvent> get roleChangeStreamStream of role changes for all participants (promotions, demotions, engine auto-corrections).
रिटर्न मान: Stream<UTDRoleChangeEvent>
activeSpeakerspropertyfinal ValueNotifier<Set<String>> activeSpeakersReactive set of identities currently speaking, polled from LiveKit every 300ms.
रिटर्न मान: ValueNotifier<Set<String>>
commentsLockedpropertyfinal ValueNotifier<bool> commentsLockedReactive whether room chat is currently locked (server-driven; never set optimistically).
रिटर्न मान: ValueNotifier<bool>
onBannedcallbackvoid Function(UTDBanNotice notice)? onBannedFired once when the local user is banned from any source (data message, removal, or token 403). Wired internally by UTDAudioRoom.
रिटर्न मान: void Function(UTDBanNotice)?
disposemethodvoid dispose()Releases all resources: timers, subscriptions, notifiers, sub-controllers and API clients.
Seat & stage control
Seat state management; all mutations go through the REST API and apply from server _seat_update messages.
UTDSeatControllerclassUTDSeatController(UTDRoomManager roomManager)Manages reactive seat state. Mutations call the REST API; local state updates only from _seat_update data messages or room _seats metadata.
takeSeatmethodasyncFuture<bool> takeSeat(int index, String userId)Requests microphone (and Bluetooth on Android) permissions then takes the seat at index via the API. State arrives via _seat_update.
पैरामीटर
indexintआवश्यकTarget seat index.
userIdStringआवश्यकIdentity taking the seat.
रिटर्न मान: Future<bool>
leaveSeatmethodasyncFuture<bool> leaveSeat(String userId)Leaves the user's current seat via the API.
पैरामीटर
userIdStringआवश्यकIdentity leaving the seat.
रिटर्न मान: Future<bool>
moveSeatmethodasyncFuture<bool> moveSeat(String userId, int targetSeat)Atomically moves the user to another seat via the API.
पैरामीटर
userIdStringआवश्यकIdentity to move.
targetSeatintआवश्यकDestination seat index.
रिटर्न मान: Future<bool>
lockSeatmethodasyncFuture<bool> lockSeat(int index, {required String identity})Admin locks the seat at index (host/admin). State arrives via _seat_update.
पैरामीटर
indexintआवश्यकSeat to lock.
identityStringआवश्यकActing host/admin identity.
रिटर्न मान: Future<bool>
kickFromSeatmethodasyncFuture<bool> kickFromSeat(int index, {required String identity})Removes the occupant from the seat at index (host/admin only).
पैरामीटर
indexintआवश्यकSeat to vacate.
identityStringआवश्यकActing host/admin identity.
रिटर्न मान: Future<bool>
setupSeatsmethodasyncFuture<bool> setupSeats({required String identity, required int seatCount, required String seatMode, String? modeId})Changes seat configuration mid-room (count/mode/modeId) (host/admin only).
पैरामीटर
identityStringआवश्यकActing host/admin identity.
seatCountintआवश्यकNew seat count.
seatModeStringआवश्यकNew seat mode ('free'/'request').
modeIdString?डिफ़ॉल्ट = nullNew room mode id.
रिटर्न मान: Future<bool>
seatspropertyfinal ValueNotifier<List<SeatState>> seatsReactive list of all seat states.
रिटर्न मान: ValueNotifier<List<SeatState>>
pendingRequestspropertyfinal ValueNotifier<List<SpeakerRequest>> pendingRequestsReactive list of pending speaker requests (for host/admin UI).
रिटर्न मान: ValueNotifier<List<SpeakerRequest>>
getSeatIndexByUserIdmethodint getSeatIndexByUserId(String userId)Returns the seat index occupied by a user, or -1 if not seated.
पैरामीटर
userIdStringआवश्यकIdentity to look up.
रिटर्न मान: int
isSeatAvailablemethodbool isSeatAvailable(int index, {String? userId})Whether the seat at index is empty, unlocked and not reserved for someone else.
पैरामीटर
indexintआवश्यकSeat index to test.
userIdString?डिफ़ॉल्ट = nullUser to evaluate reservations against.
रिटर्न मान: bool
Media control
Mic, camera, speaker and Bluetooth-routing controls, kept in sync with server/host-side mutes.
UTDMediaControllerclassUTDMediaController(UTDRoomManager roomManager)Controls mic, camera and speaker state and listens to LiveKit mute/permission events to keep reactive state authoritative.
setMicrophoneEnabledmethodasyncFuture<void> setMicrophoneEnabled(bool enabled)Enables/disables the local mic. Refuses to publish on a non-connected room to avoid the addTransceiver-on-disposed-track crash.
पैरामीटर
enabledboolआवश्यकTarget mic state.
रिटर्न मान: Future<void>
toggleMicrophonemethodasyncFuture<void> toggleMicrophone()Toggles the local microphone on/off.
रिटर्न मान: Future<void>
applyBluetoothAudioRoutingmethodasyncFuture<void> applyBluetoothAudioRouting()Re-applies the Android communication audio config with forceHandleAudioRouting so Bluetooth routing works after connect/publish; iOS uses the AVAudioSession path.
रिटर्न मान: Future<void>
setSpeakerOnmethodasyncFuture<void> setSpeakerOn(bool on)Routes audio to the loudspeaker (true) or earpiece (false).
पैरामीटर
onboolआवश्यकSpeakerphone on/off.
रिटर्न मान: Future<void>
muteAllRemoteAudiomethodvoid muteAllRemoteAudio(bool mute)Mutes/unmutes playback of all remote participants' audio (and enforces it on late-subscribed tracks).
पैरामीटर
muteboolआवश्यकWhether to mute remote audio.
isMicEnabledpropertyfinal ValueNotifier<bool> isMicEnabledReactive local mic state, kept in sync with LiveKit track mute/unmute events.
रिटर्न मान: ValueNotifier<bool>
canPublishpropertyfinal ValueNotifier<bool> canPublishReactive whether the local participant may publish mic/camera; flips false on demotion.
रिटर्न मान: ValueNotifier<bool>
Chat
Room chat send/receive with comment-lock gating and a bounded message buffer.
UTDChatControllerclassUTDChatController(UTDRoomManager roomManager)Sends and receives room chat over the data channel, enforcing the comment-lock gate and capping retained messages at 300.
sendMessagemethodasyncFuture<void> sendMessage(String text, {Map<String,dynamic>? userData})Sends a chat message (trimmed, non-empty). Refused when comments are locked and the local user is not host/admin.
पैरामीटर
textStringआवश्यकMessage body.
userDataMap<String,dynamic>?डिफ़ॉल्ट = nullOptional extra payload attached to the message.
रिटर्न मान: Future<void>
addDisplayMessagemethodvoid addDisplayMessage(UTDChatMessage message)Appends a message to the local list without sending it (used for system lines).
पैरामीटर
messageUTDChatMessageआवश्यकMessage to display locally.
clearMessagesmethodvoid clearMessages()Clears the local message list.
messagespropertyfinal ValueNotifier<List<UTDChatMessage>> messagesReactive list of chat messages (bounded to the most recent 300).
रिटर्न मान: ValueNotifier<List<UTDChatMessage>>
Configuration & theming
Behavior config, color tokens, localized strings and minimize/PiP options.
UTDAudioRoomConfigconstructorconst UTDAudioRoomConfig({bool showControlsBar = true, bool turnOnMicrophoneWhenJoining = false, bool useSpeakerWhenJoining = true, int hostSeatIndex = 0, UTDRoomTheme theme, UTDRoomStrings? strings, bool enableMinimize = true, Widget? headerWidget, ...})Configures room behavior, theme, strings and custom section/seat builders. Replaces the prebuilt config.
पैरामीटर
showControlsBarboolडिफ़ॉल्ट = trueShow the default controls bar.
showSeatNamesboolडिफ़ॉल्ट = trueShow occupant names under seats.
enableMinimizeboolडिफ़ॉल्ट = trueAllow minimizing the room to a floating overlay.
turnOnMicrophoneWhenJoiningboolडिफ़ॉल्ट = falsePublish the mic on join.
useSpeakerWhenJoiningboolडिफ़ॉल्ट = truePrefer speaker/Bluetooth output on join.
hostSeatIndexintडिफ़ॉल्ट = 0Seat index reserved for the host.
themeUTDRoomThemeडिफ़ॉल्ट = const UTDRoomTheme()Color tokens for the default UI.
stringsUTDRoomStrings?डिफ़ॉल्ट = nullLocalized strings; null = English defaults.
autoHostMicboolडिफ़ॉल्ट = trueAuto-enable the host's mic even if join-mic is false.
autoSeatHostboolडिफ़ॉल्ट = trueAuto-seat the host on hostSeatIndex if empty.
headerWidgetWidget?डिफ़ॉल्ट = nullCustom header replacing the default.
seatBuilderWidget Function(SeatState, double)?डिफ़ॉल्ट = nullCustom builder for a seat slot.
avatarBuilderWidget Function(String,double,Map<String,String>,bool,int,String)?डिफ़ॉल्ट = nullCustom occupant avatar builder.
userInRoomAttributesMap<String,String>डिफ़ॉल्ट = const {}Cosmetic attributes published to other participants.
UTDAudioRoomConfig.hostconstructorfactory UTDAudioRoomConfig.host()Factory preset for a host (microphone on when joining).
resolveStringsmethodUTDRoomStrings resolveStrings()Returns the configured strings or the English defaults.
रिटर्न मान: UTDRoomStrings
UTDRoomThemeconstructorconst UTDRoomTheme({Color background, Color surface, Color onSurface, Color primary, Color danger, Color seatRingSpeaking, Color badgeHost, Color badgeAdmin, Color badgeGuest, Color sheetBackground, Color bubbleBackground, ...})Color tokens for the built-in default UI. Every field has a dark-room default, so const UTDRoomTheme() is a complete theme.
पैरामीटर
backgroundColorडिफ़ॉल्ट = Color(0xFF14121C)Full-screen room background.
primaryColorडिफ़ॉल्ट = Color(0xFF6C5CE7)Accent / call-to-action color.
dangerColorडिफ़ॉल्ट = Color(0xFFE74C3C)Destructive color (leave/kick/ban).
seatRingSpeakingColorडिफ़ॉल्ट = Color(0xFF2ECC71)Ring around an actively-speaking seat.
badgeHostColorडिफ़ॉल्ट = Color(0xFFFFA726)Host role badge color.
badgeAdminColorडिफ़ॉल्ट = Color(0xFF448AFF)Admin role badge color.
copyWithmethodUTDRoomTheme copyWith({Color? background, Color? primary, Color? danger, ...})Returns a copy of the theme overriding only the supplied color tokens.
रिटर्न मान: UTDRoomTheme
UTDRoomStrings.enconstructorfactory UTDRoomStrings.en()English defaults for all built-in UI labels (seat actions, requests, host panels, comment-lock, templated lines).
UTDRoomStrings.arconstructorfactory UTDRoomStrings.ar()Arabic defaults for all built-in UI labels.
UTDMinimizeConfigconstructorconst UTDMinimizeConfig({VoidCallback? onClose, MiniOverlayBuilder? overlayBuilder, double overlayWidth = 120, double overlayHeight = 120, bool enableOSPip = false, int pipAspectWidth = 1, int pipAspectHeight = 1, ...})Configures the minimize floating overlay and optional Android OS-level Picture-in-Picture (enableOSPip).
पैरामीटर
onCloseVoidCallback?डिफ़ॉल्ट = nullCalled when the room is closed from the overlay.
overlayBuilderMiniOverlayBuilder?डिफ़ॉल्ट = nullCustom floating-overlay builder.
enableOSPipboolडिफ़ॉल्ट = falseEnable Android 12+ system PiP in addition to the overlay.
pipAspectWidthintडिफ़ॉल्ट = 1PiP aspect ratio numerator.
pipAspectHeightintडिफ़ॉल्ट = 1PiP aspect ratio denominator.
Models & enums
Data models for seats, room modes, chat and connection state.
SeatStateclassconst SeatState({required int index, String? occupantUserId, bool isLocked = false, bool isMuted = false, String? reservedFor, Map<String,String> attributes})Immutable (Equatable) state of a single seat: index, occupant, lock/mute flags, reservation and occupant attributes.
पैरामीटर
indexintआवश्यकSeat index (0 = host seat).
occupantUserIdString?डिफ़ॉल्ट = nullOccupant identity; null = empty.
isLockedboolडिफ़ॉल्ट = falseWhether the seat is admin-locked.
isMutedboolडिफ़ॉल्ट = falseWhether the occupant's mic is muted.
reservedForString?डिफ़ॉल्ट = nullIdentity this seat is reserved for.
attributesMap<String,String>डिफ़ॉल्ट = const {}Occupant cosmetic attributes (avatar, frame, etc.).
SpeakerRequestclassconst SpeakerRequest({required int id, required String identity, String? createdAt})A pending request to speak: id, requester identity and createdAt timestamp.
पैरामीटर
idintआवश्यकRequest id.
identityStringआवश्यकRequesting identity.
createdAtString?डिफ़ॉल्ट = nullCreation timestamp.
RoomSeatStateclassconst RoomSeatState({required int count, required String mode, String? modeId, required List<SeatState> seats, required List<SpeakerRequest> requests})Full seat snapshot from the backend _seats namespace: count, mode, modeId, seats and pending requests.
पैरामीटर
countintआवश्यकSeat count.
modeStringआवश्यकSeat mode ('free'/'request').
modeIdString?डिफ़ॉल्ट = nullRoom mode id.
seatsList<SeatState>आवश्यकPer-seat states.
requestsList<SpeakerRequest>आवश्यकPending speaker requests.
UTDRoomModeclassconst UTDRoomMode({required String id, required int seatCount, required List<List<int>> rows, double? seatSize, UTDSeatContainerBuilder? containerBuilder, UTDBackgroundBuilder? backgroundBuilder, String? displayName})Defines a seat layout mode: id, seat count, row arrangement and optional custom container/background builders. Identity is its id.
पैरामीटर
idStringआवश्यकUnique mode id (e.g. '3').
seatCountintआवश्यकNumber of seats.
rowsList<List<int>>आवश्यकSeat-index layout per row.
seatSizedouble?डिफ़ॉल्ट = nullExplicit seat size override.
containerBuilderUTDSeatContainerBuilder?डिफ़ॉल्ट = nullCustom seat-grid container builder.
backgroundBuilderUTDBackgroundBuilder?डिफ़ॉल्ट = nullMode-specific background builder.
computeSeatSizemethoddouble computeSeatSize(double screenWidth)Single source of truth for the seat slot size in logical px, scaled sub-linearly (sqrt) with screen width and clamped to 52–120.
पैरामीटर
screenWidthdoubleआवश्यकAvailable screen width.
रिटर्न मान: double
UTDRoomMode.defaultModefieldstatic const UTDRoomMode defaultModeBuilt-in default mode: id '3', 9 seats in a 1-4-4 layout.
रिटर्न मान: UTDRoomMode
UTDChatMessageclassUTDChatMessage({required String senderUserId, required String senderName, required String text, required DateTime timestamp, Map<String,dynamic> userData, String? messageID})A chat message with sender, text, timestamp, arbitrary userData and an auto-generated messageID. JSON-serializable.
पैरामीटर
senderUserIdStringआवश्यकSender identity.
senderNameStringआवश्यकSender display name.
textStringआवश्यकMessage body.
timestampDateTimeआवश्यकMessage time.
userDataMap<String,dynamic>डिफ़ॉल्ट = const {}Extra payload (e.g. system-line markers).
messageIDString?डिफ़ॉल्ट = nullMessage id; auto-generated when omitted.
UTDConnectionStateenumenum UTDConnectionState { disconnected, connecting, connected, reconnecting, error }Room connection state: disconnected, connecting, connected, reconnecting, error.
रिटर्न मान: UTDConnectionState
UTD के साथ बनाने के लिए तैयार हैं?
अपना अकाउंट बनाएँ, अपने मास्टर वॉलेट को फंड करें, और अपनी ज़रूरत की सेवाएँ चालू करें।