custom library

Join a Deewan meeting from Flutter and draw your own interface, end-to-end encrypted.

final meeting = await DeewanMeeting.join(
  MeetingCredentials.fromJson(await fetchCredentialsFromYourServer()),
  microphone: true,
  camera: true,
);
// meeting.room is a ChangeNotifier: rebuild with ListenableBuilder.
VideoTrackRenderer(meeting.videoTrack(person.id)!);

People on phones, in browsers and in Deewan's own apps are in the same meeting: chat, reactions, hands, polls, captions, webinar Q&A and strict encryption all interoperate. Host powers (muting others, the stage, breakouts, recording) belong to your server, through the REST API.

Classes

DeewanAnnouncement
A host's message to everyone in breakout rooms.
DeewanCaption
A caption line. Lines with the same id replace each other until isFinal.
DeewanMeeting
A live meeting. Create one with DeewanMeeting.join.
DeewanMessage
DeewanParticipant
DeewanPoll
DeewanPollOption
DeewanReaction
DeewanRecording
MeetingCredentials
What your server got from POST /rooms/{id}/tokens.
Question
Room
Room is the primary construct for LiveKit conferences. It contains a group of Participants, each publishing and subscribing to Tracks. Notifies changes to its state via two ways, by assigning a delegate, or using it as a provider. Room will trigger a change notification update when
StrictState
Whether the meeting key has arrived, and the code to compare out loud.
VideoTrackRenderer
Widget that renders a VideoTrack.

Enums

DeewanLeaveReason
DeewanMeetingKind
A plain meeting (everyone may publish) or a webinar (a stage and an audience).

Mixins

VideoTrack
Used to group LocalVideoTrack and RemoteVideoTrack.

Constants

maxQuestionChars → const int

Functions

exchangeKey() → String
Strict rooms: this app's public exchange key. Send it to your server, which passes it as exchange_key when it asks for a room token; the private half never leaves the device.

Exceptions / Errors

DeewanException
A failed participant API call; code is the API's error code.