qriib_meet 0.4.0
qriib_meet: ^0.4.0 copied to clipboard
Flutter SDK for Qriib room management and embedded audio/video meetings, with customizable meeting controls, pre-join preview and screen sharing.
example/example.md
Join a meeting using a fresh link #
This minimal Flutter application targets the current source checkout, using
only its public package API. Published 0.2.1 has a different API surface; use the
path dependency described in the integration guide for this example. Your trusted
backend must supply a fresh final_link from the Qriib create/join/start response;
the SDK does not create a room in this example. Do not ship a project secret in
an untrusted client application.
Add qriib_meet to your Flutter app, apply the Android/iOS camera and microphone
setup in the integration guide, and replace
lib/main.dart with the following code. Supply QRIIB_FINAL_LINK locally for a
short development session. Build-time defines are not secure secret storage;
production apps should obtain a fresh link through their authenticated backend.
import 'package:flutter/material.dart';
import 'package:qriib_meet/qriib_meet.dart';
void main() => runApp(const MaterialApp(home: JoinMeetingPage()));
class JoinMeetingPage extends StatefulWidget {
const JoinMeetingPage({super.key});
@override
State<JoinMeetingPage> createState() => _JoinMeetingPageState();
}
class _JoinMeetingPageState extends State<JoinMeetingPage> {
final _meetings = QriibMeetings();
bool _joining = false;
String? _error;
Future<void> _join() async {
const finalLink = String.fromEnvironment('QRIIB_FINAL_LINK');
if (finalLink.isEmpty) {
setState(() => _error = 'Supply a fresh meeting link first.');
return;
}
setState(() {
_joining = true;
_error = null;
});
try {
await _meetings.join(
context: context,
finalLink: finalLink,
configuration: const QriibMeetingConfiguration(
title: 'Team meeting',
preJoin: QriibPreJoinConfiguration(enabled: true),
),
);
} catch (_) {
// Do not log the link, credentials, or raw server response.
if (mounted) {
setState(
() => _error = 'Unable to join. Request a fresh link and retry.');
}
} finally {
if (mounted) setState(() => _joining = false);
}
}
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(title: const Text('Qriib meeting')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
FilledButton(
onPressed: _joining ? null : _join,
child: Text(_joining ? 'Meeting open…' : 'Join meeting'),
),
if (_error != null) Text(_error!),
],
),
),
);
}
Both camera and microphone permissions are requested. Cancelling the pre-join
screen does not connect to the meeting. The default meeting view leaves its
session when disposed. This credential-free QriibMeetings() example does not
provide recording access; recording requires a configured service and project
credentials in a suitably trusted environment.
Full playground #
The repository's example app exercises rooms, recording commands, customization and pre-join behavior. Its offline demo uses fake sessions to render the actual SDK views without Qriib credentials; it does not prove media connectivity or server recording. Run the playground on Android or iOS:
cd example
flutter pub get
flutter run
See recording documentation for current-source recording support and release notes for release availability.