qriib_meet 0.0.1 copy "qriib_meet: ^0.0.1" to clipboard
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.

1
likes
0
points
168
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter APIs for creating Qriib rooms and embedding secure, customizable audio and video meeting experiences.

Homepage

License

unknown (license)

Dependencies

async, collection, connectivity_plus, crypto, dart_jsonwebtoken, dart_webrtc, device_info_plus, dio, fixnum, flutter, flutter_webrtc, http, json_annotation, logging, meta, mime_type, path, permission_handler, pretty_dio_logger, protobuf, sdp_transform, synchronized, uuid, web

More

Packages that depend on qriib_meet

Packages that implement qriib_meet