Назад к разработчикам

< Flutter UIKit />

UTD Audio Room Kit

Готовые live-аудиокомнаты с местами, чатом в реальном времени и модерацией.

Версия 1.5.0На pub.dev
iOS 11+Android 21+
audio_room_kit.dart
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

Встроенная локализация

PiP

+ сворачивание

< utd_audio_room_kit />

Ключевые возможности

Полноценный, настраиваемый Flutter-пакет для live-аудиокомнат на базе LiveKit и UTD Stream Engine. Готовый интерфейс комнаты с управлением местами, запросами на выступление, списками участников, чатом в реальном времени, медиаконтролями, сворачиванием/PiP и полной модерацией со стороны ведущего/админа — без отдельного бэкенд-сервера токенов.

Готовый интерфейс аудиокомнаты — без лишнего кода

Управление местами: занять, освободить, сменить, заблокировать, разблокировать, выгнать, заглушить, поменять местами

Очередь запросов на выступление с одобрением/отклонением

Список участников с действиями ведущего/админа (заглушить, выгнать, пригласить, забанить, повысить/понизить)

Чат через data-канал в реальном времени с пакетной отправкой и дедупликацией

Управление микрофоном и динамиком с приоритетом маршрутизации на Bluetooth

Многоуровневое переподключение (лёгкая синхронизация <15s, полная <60s)

Сворачивание в плавающее окно и Picture-in-Picture от Android OS

Настройка темы и встроенная локализация (EN/AR)

Полная замена секций (шапка, сообщения, контролы, фон, места)

Без бэкенд-сервера токенов — поток токенов на основе appKey

< utd_audio_room_kit />

Начать

1

Установка

Terminal
flutter pub add utd_audio_room_kit
2

Открыть на pub.dev

Готовые live-аудиокомнаты с местами, чатом в реальном времени и модерацией.

< utd_audio_room_kit />

Справочник API

Main widget

The drop-in prebuilt audio-room widget that hosts the full UI and connection lifecycle.

UTDAudioRoomwidget
const 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()?По умолчанию = null

    Async admin-list source; triggers a non-blocking self-upgrade if it lists the local user.

  • adminIdsNowSet<String> Function()?По умолчанию = null

    Sync 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?По умолчанию = null

    Optional externally-owned controller (e.g. when restoring from minimize).

  • onControllerReadyvoid Function(UTDRoomController)?По умолчанию = null

    Called once the controller is created/attached.

  • onConnectionChangedvoid Function(bool isConnected)?По умолчанию = null

    Fired on connect success/failure.

  • onSeatTapvoid Function(int index, SeatState seat)?По умолчанию = null

    Called when a seat is tapped.

  • onSeatChangedvoid Function(List<SeatState> seats)?По умолчанию = null

    Called whenever seat state changes.

  • onConnectErrorvoid Function(Object error, StackTrace)?По умолчанию = null

    Called when the initial connect fails.

Room controller

Top-level controller owning connection, sub-controllers, roles, bans and speaker flows.

UTDRoomControllerconstructor
UTDRoomController()

Creates the controller and its seat, media, chat, minimize and PiP sub-controllers. Usually created internally by UTDAudioRoom.

initApimethod
void 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.defaultBaseUrl

    In-room engine host for seat/speaker/ban/role calls.

  • tokenBaseUrlStringПо умолчанию = UTDApiClient.defaultTokenBaseUrl

    Edge host used for token generation.

  • appIdString?По умолчанию = null

    Engine app ID.

  • appKeyStringобязательный

    Publishable app key sent as X-App-Key for minting.

connectmethodasync
Future<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По умолчанию = 9

    Number of seats to initialize.

  • enableMicOnJoinboolПо умолчанию = false

    Publish the local mic on connect.

  • useSpeakerboolПо умолчанию = true

    Prefer Bluetooth/loudspeaker output on join.

  • userAttributesMap<String,String>По умолчанию = const {}

    Cosmetic LiveKit participant attributes (avatar/frame/etc.).

  • roomNameString?По умолчанию = null

    Room name used for seat API calls.

Возвращает: Future<void>

generateTokenmethodasync
Future<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?По умолчанию = null

    Display name.

  • seatCountint?По умолчанию = null

    Initial seat count (host only).

  • modeIdString?По умолчанию = null

    Room mode id (host only).

Возвращает: Future<UTDTokenResponse>

leavemethodasync
Future<void> leave()

Leaves the room: tears down listeners, drains any pending mic publish, disconnects LiveKit, and resets minimize/PiP state.

Возвращает: Future<void>

changeRolemethodasync
Future<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>

banUsermethodasync
Future<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?По умолчанию = null

    Optional ban reason.

  • durationSecondsint?По умолчанию = null

    Ban duration; null = permanent.

  • globalboolПо умолчанию = false

    True for a project-wide ban.

Возвращает: Future<bool>

lockCommentsmethodasync
Future<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>

requestToSpeakmethodasync
Future<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>?>

inviteToSpeakmethodasync
Future<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?По умолчанию = null

    Target seat the invitee is seated on if accepted.

Возвращает: Future<Map<String,dynamic>?>

isConnectedgetter
bool get isConnected

True when the room connection state is connected.

Возвращает: bool

isHostOrAdmingetter
bool get isHostOrAdmin

Whether the local participant's role is host or admin.

Возвращает: bool

participantsStreamgetterasync
Stream<List<UTDParticipant>> get participantsStream

Stream of all room participants, emitting on join/leave/attribute/metadata changes.

Возвращает: Stream<List<UTDParticipant>>

roleChangeStreamgetterasync
Stream<UTDRoleChangeEvent> get roleChangeStream

Stream of role changes for all participants (promotions, demotions, engine auto-corrections).

Возвращает: Stream<UTDRoleChangeEvent>

activeSpeakersproperty
final ValueNotifier<Set<String>> activeSpeakers

Reactive set of identities currently speaking, polled from LiveKit every 300ms.

Возвращает: ValueNotifier<Set<String>>

commentsLockedproperty
final ValueNotifier<bool> commentsLocked

Reactive whether room chat is currently locked (server-driven; never set optimistically).

Возвращает: ValueNotifier<bool>

onBannedcallback
void Function(UTDBanNotice notice)? onBanned

Fired once when the local user is banned from any source (data message, removal, or token 403). Wired internally by UTDAudioRoom.

Возвращает: void Function(UTDBanNotice)?

disposemethod
void 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.

UTDSeatControllerclass
UTDSeatController(UTDRoomManager roomManager)

Manages reactive seat state. Mutations call the REST API; local state updates only from _seat_update data messages or room _seats metadata.

takeSeatmethodasync
Future<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>

leaveSeatmethodasync
Future<bool> leaveSeat(String userId)

Leaves the user's current seat via the API.

Параметры

  • userIdStringобязательный

    Identity leaving the seat.

Возвращает: Future<bool>

moveSeatmethodasync
Future<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>

lockSeatmethodasync
Future<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>

kickFromSeatmethodasync
Future<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>

setupSeatsmethodasync
Future<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?По умолчанию = null

    New room mode id.

Возвращает: Future<bool>

seatsproperty
final ValueNotifier<List<SeatState>> seats

Reactive list of all seat states.

Возвращает: ValueNotifier<List<SeatState>>

pendingRequestsproperty
final ValueNotifier<List<SpeakerRequest>> pendingRequests

Reactive list of pending speaker requests (for host/admin UI).

Возвращает: ValueNotifier<List<SpeakerRequest>>

getSeatIndexByUserIdmethod
int getSeatIndexByUserId(String userId)

Returns the seat index occupied by a user, or -1 if not seated.

Параметры

  • userIdStringобязательный

    Identity to look up.

Возвращает: int

isSeatAvailablemethod
bool 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?По умолчанию = null

    User to evaluate reservations against.

Возвращает: bool

Media control

Mic, camera, speaker and Bluetooth-routing controls, kept in sync with server/host-side mutes.

UTDMediaControllerclass
UTDMediaController(UTDRoomManager roomManager)

Controls mic, camera and speaker state and listens to LiveKit mute/permission events to keep reactive state authoritative.

setMicrophoneEnabledmethodasync
Future<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>

toggleMicrophonemethodasync
Future<void> toggleMicrophone()

Toggles the local microphone on/off.

Возвращает: Future<void>

applyBluetoothAudioRoutingmethodasync
Future<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>

setSpeakerOnmethodasync
Future<void> setSpeakerOn(bool on)

Routes audio to the loudspeaker (true) or earpiece (false).

Параметры

  • onboolобязательный

    Speakerphone on/off.

Возвращает: Future<void>

muteAllRemoteAudiomethod
void muteAllRemoteAudio(bool mute)

Mutes/unmutes playback of all remote participants' audio (and enforces it on late-subscribed tracks).

Параметры

  • muteboolобязательный

    Whether to mute remote audio.

isMicEnabledproperty
final ValueNotifier<bool> isMicEnabled

Reactive local mic state, kept in sync with LiveKit track mute/unmute events.

Возвращает: ValueNotifier<bool>

canPublishproperty
final ValueNotifier<bool> canPublish

Reactive 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.

UTDChatControllerclass
UTDChatController(UTDRoomManager roomManager)

Sends and receives room chat over the data channel, enforcing the comment-lock gate and capping retained messages at 300.

sendMessagemethodasync
Future<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>?По умолчанию = null

    Optional extra payload attached to the message.

Возвращает: Future<void>

addDisplayMessagemethod
void addDisplayMessage(UTDChatMessage message)

Appends a message to the local list without sending it (used for system lines).

Параметры

  • messageUTDChatMessageобязательный

    Message to display locally.

clearMessagesmethod
void clearMessages()

Clears the local message list.

messagesproperty
final ValueNotifier<List<UTDChatMessage>> messages

Reactive 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.

UTDAudioRoomConfigconstructor
const 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По умолчанию = true

    Show the default controls bar.

  • showSeatNamesboolПо умолчанию = true

    Show occupant names under seats.

  • enableMinimizeboolПо умолчанию = true

    Allow minimizing the room to a floating overlay.

  • turnOnMicrophoneWhenJoiningboolПо умолчанию = false

    Publish the mic on join.

  • useSpeakerWhenJoiningboolПо умолчанию = true

    Prefer speaker/Bluetooth output on join.

  • hostSeatIndexintПо умолчанию = 0

    Seat index reserved for the host.

  • themeUTDRoomThemeПо умолчанию = const UTDRoomTheme()

    Color tokens for the default UI.

  • stringsUTDRoomStrings?По умолчанию = null

    Localized strings; null = English defaults.

  • autoHostMicboolПо умолчанию = true

    Auto-enable the host's mic even if join-mic is false.

  • autoSeatHostboolПо умолчанию = true

    Auto-seat the host on hostSeatIndex if empty.

  • headerWidgetWidget?По умолчанию = null

    Custom header replacing the default.

  • seatBuilderWidget Function(SeatState, double)?По умолчанию = null

    Custom builder for a seat slot.

  • avatarBuilderWidget Function(String,double,Map<String,String>,bool,int,String)?По умолчанию = null

    Custom occupant avatar builder.

  • userInRoomAttributesMap<String,String>По умолчанию = const {}

    Cosmetic attributes published to other participants.

UTDAudioRoomConfig.hostconstructor
factory UTDAudioRoomConfig.host()

Factory preset for a host (microphone on when joining).

resolveStringsmethod
UTDRoomStrings resolveStrings()

Returns the configured strings or the English defaults.

Возвращает: UTDRoomStrings

UTDRoomThemeconstructor
const 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.

copyWithmethod
UTDRoomTheme copyWith({Color? background, Color? primary, Color? danger, ...})

Returns a copy of the theme overriding only the supplied color tokens.

Возвращает: UTDRoomTheme

UTDRoomStrings.enconstructor
factory UTDRoomStrings.en()

English defaults for all built-in UI labels (seat actions, requests, host panels, comment-lock, templated lines).

UTDRoomStrings.arconstructor
factory UTDRoomStrings.ar()

Arabic defaults for all built-in UI labels.

UTDMinimizeConfigconstructor
const 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?По умолчанию = null

    Called when the room is closed from the overlay.

  • overlayBuilderMiniOverlayBuilder?По умолчанию = null

    Custom floating-overlay builder.

  • enableOSPipboolПо умолчанию = false

    Enable Android 12+ system PiP in addition to the overlay.

  • pipAspectWidthintПо умолчанию = 1

    PiP aspect ratio numerator.

  • pipAspectHeightintПо умолчанию = 1

    PiP aspect ratio denominator.

Models & enums

Data models for seats, room modes, chat and connection state.

SeatStateclass
const 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?По умолчанию = null

    Occupant identity; null = empty.

  • isLockedboolПо умолчанию = false

    Whether the seat is admin-locked.

  • isMutedboolПо умолчанию = false

    Whether the occupant's mic is muted.

  • reservedForString?По умолчанию = null

    Identity this seat is reserved for.

  • attributesMap<String,String>По умолчанию = const {}

    Occupant cosmetic attributes (avatar, frame, etc.).

SpeakerRequestclass
const 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?По умолчанию = null

    Creation timestamp.

RoomSeatStateclass
const 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?По умолчанию = null

    Room mode id.

  • seatsList<SeatState>обязательный

    Per-seat states.

  • requestsList<SpeakerRequest>обязательный

    Pending speaker requests.

UTDRoomModeclass
const 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?По умолчанию = null

    Explicit seat size override.

  • containerBuilderUTDSeatContainerBuilder?По умолчанию = null

    Custom seat-grid container builder.

  • backgroundBuilderUTDBackgroundBuilder?По умолчанию = null

    Mode-specific background builder.

computeSeatSizemethod
double 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.defaultModefield
static const UTDRoomMode defaultMode

Built-in default mode: id '3', 9 seats in a 1-4-4 layout.

Возвращает: UTDRoomMode

UTDChatMessageclass
UTDChatMessage({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?По умолчанию = null

    Message id; auto-generated when omitted.

UTDConnectionStateenum
enum UTDConnectionState { disconnected, connecting, connected, reconnecting, error }

Room connection state: disconnected, connecting, connected, reconnecting, error.

Возвращает: UTDConnectionState

Готовы создавать вместе с UTD?

Создайте аккаунт, пополните главный кошелёк и включите нужные вам сервисы.