qriib_meet 0.0.1
qriib_meet: ^0.0.1 copied to clipboard
Flutter APIs for creating Qriib rooms and embedding secure, customizable audio and video meeting experiences.
qriib_meet #
Flutter room and meeting APIs for Qriib applications.
QriibMeetClient keeps room REST calls and the meeting experience together:
final qriib = QriibMeetClient.withProjectCredentials(
apiKey: const String.fromEnvironment('QRIIB_API_KEY'),
secretKey: const String.fromEnvironment('QRIIB_SECRET_KEY'),
enableNetworkLogging: false,
);
final room = await qriib.rooms.createQuickVideoRoom(
projectId: projectId,
clientRoomId: clientRoomId,
metadata: const QriibRoomMetadata(roomTitle: 'Daily meeting'),
);
await qriib.meetings.join(
context: context,
finalLink: room['final_link'] as String,
configuration: QriibMeetingConfiguration(
theme: const QriibMeetingTheme(primaryColor: Color(0xFF7C5CFC)),
controlsBuilder: (context, state, session) => MyMeetingControls(
cameraEnabled: state.cameraEnabled,
onCameraPressed: () => session.setCameraEnabled(!state.cameraEnabled),
onLeavePressed: session.leave,
),
),
);
For a room created with createQuickAudioRoom (or a scheduled audio room),
join with videoEnabled: false:
await qriib.meetings.join(
context: context,
finalLink: room['final_link'] as String,
videoEnabled: false,
);
This requests microphone permission only and never starts the camera. The default video-off control remains visible but disabled, with an accessibility label and tooltip explaining that video is unavailable in an audio-only room.
QriibMeetingConfiguration is optional. Without it, the package displays its
premium default meeting view. The supplied builders receive Qriib session and
participant types only; consumers do not need to import the media engine.
Always obtain a fresh final_link before joining. Do not store or log it.
Host permissions #
Add these declarations to the host app's
android/app/src/main/AndroidManifest.xml, directly under <manifest>:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
On iOS, add purpose strings to the host application's
ios/Runner/Info.plist:
<key>NSCameraUsageDescription</key>
<string>Use the camera to share video in a meeting.</string>
<key>NSMicrophoneUsageDescription</key>
<string>Use the microphone to share audio in a meeting.</string>
permission_handler_apple also requires the iOS host's Podfile to enable
the camera and microphone permission macros. Add these definitions to every
Pods build configuration in the post_install hook:
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
'PERMISSION_CAMERA=1',
'PERMISSION_MICROPHONE=1',
]
The example app is a generated Android/iOS smoke host. It reads
QRIIB_API_KEY, QRIIB_SECRET_KEY, and a fresh QRIIB_FINAL_LINK from
compile-time environment definitions; it contains no credential or link
values. Supply them through your development or CI secret store when running
the example on a trusted device.
Transport and credentials #
qriib_meet owns the signed Qriib V4 transport. Applications do not create a
second HTTP client, manually set key or hash-signature, or depend on a
separate V.cloud package. Keep project API credentials and fresh final_link
values out of source control and application logs.