zoom_meeting_glmv
A Flutter plugin for the Zoom Meeting SDK, with Dart-level control over Zoom's built-in in-meeting UI.
Zoom renders its own full-screen meeting interface. This package lets you decide what appears in it — hide the meeting ID, passcode, invite link, screen share, participants list, or the whole overflow menu, and choose whether a participant joins muted and with the camera off.
Tested against Zoom Meeting SDK 6.4.3 (Android 6.4.3.28970, iOS 6.4.3.23800).
Supported platforms
| Platform | Status |
|---|---|
| Android | Supported, UI options implemented |
| iOS | Supported, UI options implemented, Swift Package Manager and CocoaPods |
| macOS | Inherited from upstream, no UI options, untested, CocoaPods only |
| Windows | Inherited from upstream, no UI options, untested |
⚠️ This plugin does not bundle Zoom's SDK binaries. They are proprietary and licensed per application, so you download them yourself — see Getting started.
Why this package exists
The Zoom Meeting SDK exposes switches for most of its meeting UI, but existing
Flutter bridges forward only no_video and no_audio, leaving the rest
unreachable from Dart. If you are embedding Zoom in a product — a classroom, a
telehealth visit, a paid lesson — Zoom's default toolbar hands every participant
the meeting ID, the passcode and an invite link.
This package surfaces those switches.
import 'package:zoom_meeting_glmv/zoom_meeting_glmv.dart';
import 'package:zoom_meeting_glmv/models/zoom_meeting_sdk_request.dart';
final zoom = ZoomMeetingGlmv();
await zoom.initZoom();
await zoom.authZoom(jwtToken: jwt);
await zoom.joinMeeting(
ZoomMeetingSdkRequest(
meetingNumber: meetingNumber,
password: passcode,
displayName: displayName,
uiOptions: ZoomMeetingUiOptions.lessonLockdown,
),
);
lessonLockdown leaves the microphone, chat and leave controls and hides
everything else, joining muted and with the camera off. Build your own set when
it does not fit:
uiOptions: const ZoomMeetingUiOptions(
hideMeetingPassword: true,
hideInviteButton: true,
hideShareButton: true,
hideVideoButton: true,
joinWithVideoOff: true,
),
Every flag defaults to false, so omitting uiOptions gives you Zoom's default
UI unchanged. The full list, with per-platform support, is in
README_API.md.
Pair
joinWithVideoOffwithhideVideoButton. Hiding the video button while joining with the camera on leaves a participant broadcasting with no control to stop it.
What it cannot hide
Some toolbar items have no visibility API in either SDK, and must be turned off in the Zoom web portal instead:
- AI Companion — disable each feature under Account Settings → AI Companion, then set each to "Hidden in Meetings toolbar".
- Captions —
hideClosedCaptioncovers Zoom's legacy closed-caption feature only, not live transcription. Turn off Automated captions in the portal. - Raise hand — no switch exists anywhere for meetings; Zoom scopes that
control to webinars. Note it moves into the main toolbar when you set
hideMoreButton. - The meeting ID on iOS — no switch exists.
hideMeetingTitleis the mitigation, since the title opens the meeting-info panel.
Getting started
1. Download the Zoom Meeting SDK
Get it from the Zoom App Marketplace after enabling Meeting SDK under your app's Features → Embed section. You need a Meeting SDK app to obtain the credentials that sign your JWTs.
2. Place the binaries
Create a ZoomSDK/ directory at the root of your Flutter project:
<your app>/
├── ZoomSDK/
│ ├── android/
│ │ ├── mobilertc.aar
│ │ └── build.gradle # ships with the SDK, defines sdkDependenciesList
│ └── ios/
│ ├── MobileRTC.xcframework
│ └── MobileRTCResources.bundle
├── android/
├── ios/
└── lib/
Both platforms resolve ZoomSDK/ automatically and fail with an explicit
message if it is missing. To keep the SDK somewhere else, override the
location per platform — in android/gradle.properties:
zoomSdkDir=../vendor/zoom/android
and through the environment on iOS:
export ZOOM_SDK_IOS_DIR=/path/to/vendor/zoom/ios
On iOS the plugin points its own compile and link at that copy, whether your
project integrates plugins with Swift Package Manager or CocoaPods. Your app
target still embeds the XCFramework and copies MobileRTCResources.bundle;
README_IOS.md covers both, with a Podfile snippet that
scripts it.
3. Platform setup
4. Authorise
Meeting SDK JWTs must be generated on a trusted server. Never ship your Zoom Client Secret in the app. See Zoom's authorisation docs.
Documentation
- API reference — every method, event stream and UI flag
- Example code
Credits
Derived from flutter_zoom_meeting_sdk
0.0.11 by SIMITGROUP, used under the Apache License 2.0. See NOTICE
for the list of changes made in this derivative work.
Not affiliated with, endorsed by, or sponsored by SIMITGROUP or Zoom Communications, Inc. "Zoom" is a trademark of Zoom Communications, Inc.
License
Libraries
- enums/action_type
- enums/event_type
- enums/platform_type
- enums/status_meeting_end_reason
- enums/status_meeting_error
- enums/status_meeting_status
- enums/status_meeting_type
- enums/status_zoom_error
- helpers/common
- helpers/message
- models/jwt_response
- models/zoom_meeting_action_response
- models/zoom_meeting_event_response
- models/zoom_meeting_sdk_request
- models/zoom_meeting_sdk_response
- models/zoom_meeting_ui_options
- zoom_meeting_glmv
- zoom_meeting_glmv_method_channel
- zoom_meeting_glmv_platform_interface