Package selection guidance compiled from public package information, community data, and project usage.
The jitsi_meet_flutter_sdk is a Flutter plugin that integrates Jitsi Meet's video conferencing capabilities into Flutter applications, delivering a seamless, native-like experience across Android and iOS. It enables developers to embed real-time audio, video, and screen sharing directly within their apps using the robust, open-source Jitsi infrastructure. The SDK supports customizable meeting interfaces and secure, scalable communication with end-to-end encryption.
Use cases
In-app video calls for telehealth platforms
Virtual classrooms and online learning apps
Remote team collaboration tools
Customer support with video interaction
Live event streaming with audience participation
Key features
Cross-platform compatibility (Android & iOS)
End-to-end encryption
Customizable UI components
Screen sharing and recording support
Integration with existing Flutter workflows
Suitable for
Developers building real-time communication features
Educational technology startups
Healthcare app creators
Enterprise collaboration tools
Open-source project contributors
Considerations
Requires a self-hosted or managed Jitsi server for full control
Network bandwidth considerations for high-quality video
Additional configuration for advanced security settings
Limited customization of core Jitsi UI elements
Dependent on stable internet connectivity for optimal performance
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
Jitsi Meet Flutter SDK
The Jitsi Meet Flutter SDK provides the same user experience as the Jitsi Meet app, in the form of a Flutter plugin so that you can embed and customize Jitsi Meet in your own Flutter app.
Supported platforms
Platform
Supported
Notes
Android
✅
Minimum API level is 24
iOS
✅
Minimum supported version is 15.1
Web
❌
Sample application using the Flutter
If you want to see how easy integrating the Jitsi Meet Flutter SDK into a Flutter application is, take a look at the sample applications repository.
Installation
Add dependency
Add the dependency from command-line
$ flutter pub add jitsi_meet_flutter_sdk
The command above will add this to the pubspec.yaml file in your project (you can do this manually):
Firstly, create a JitsiMeet object, then call the method join from it with a JitsiMeetConferenceOptions object
var jitsiMeet = JitsiMeet();
var options = JitsiMeetConferenceOptions(room: 'jitsiIsAwesome');
jitsiMeet.join(options);
Configuration
iOS
Make sure in Podfile from ios directory you set the ios version 15.1 or higher
platform :ios, '15.1'
The plugin requests camera and microphone access, make sure to include the required entries for NSCameraUsageDescription and NSMicrophoneUsageDescription in your Info.plist file from the ios/Runner directory.
<key>NSCameraUsageDescription</key>
<string>The app needs access to your camera for meetings.</string><key>NSMicrophoneUsageDescription</key><string>The app needs access to your microphone for meetings.</string>
The application:label field from the Jitsi Meet Android SDK will conflict with your application's one . Go to android/app/src/main/AndroidManifest.xml and add the tools library and tools:replace="android:label" to the application tag.
Joins a meeting with the given options and optionally a listener is given
options : meeting options
listener : event listener for events triggered by the native sdks
hangUp()
The localParticipant leaves the current meeting.
setAudioMuted(bool muted)
Sets the state of the localParticipant audio muted according to the muted parameter.
setVideoMuted(bool muted)
Sets the state of the localParticipant video muted according to the muted parameter.
sendEndpointTextMessage({String? to, required String message})
Sends a message via the data channel to one particular participant or to all of them. If the to param is empty, the message will be sent to all the participants in the conference.
In order to get the participantId, the participantsJoined event should be listened for, which have as a parameter the participantId and this should be stored somehow.
toggleScreenShare(bool enabled)
Sets the state of the localParticipant screen sharing according to the enabled parameter.
openChat([String? to])
Opens the chat dialog. If to contains a valid participantId, the private chat with that particular participant will be opened.
sendChatMessage({String? to, required String message})
Sends a chat message via to one particular participant or to all of them. If the to param is empty, the message will be sent to all the participants in the conference.
In order to get the participantId, the participantsJoined event should be listened for, which have as a parameter the participantId and this should be stored somehow.
closeChat()
Closes the chat dialog.
retrieveParticipantsInfo()
Sends and event that will trigger the participantsInfoRetrieved event which will contain participants information
JitsiMeetConferenceOptions
This object encapsulates all the options that can be tweaked when joining a conference.