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.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:qriib_meet/qriib_meet.dart';

const _apiKey = String.fromEnvironment('QRIIB_API_KEY');
const _secretKey = String.fromEnvironment('QRIIB_SECRET_KEY');
const _finalLink = String.fromEnvironment('QRIIB_FINAL_LINK');

void main() => runApp(const QriibMeetExampleApp());

class QriibMeetExampleApp extends StatelessWidget {
  const QriibMeetExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Qriib Meet Example',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFF6750A4)),
        useMaterial3: true,
      ),
      home: const _JoinPage(),
    );
  }
}

class _JoinPage extends StatefulWidget {
  const _JoinPage();

  @override
  State<_JoinPage> createState() => _JoinPageState();
}

class _JoinPageState extends State<_JoinPage> {
  late final QriibMeetClient _client = QriibMeetClient.withProjectCredentials(
    apiKey: _apiKey,
    secretKey: _secretKey,
    enableNetworkLogging: false,
  );

  bool _joining = false;

  bool get _isConfigured =>
      _apiKey.isNotEmpty && _secretKey.isNotEmpty && _finalLink.isNotEmpty;

  Future<void> _join() async {
    if (!_isConfigured || _joining) return;
    setState(() => _joining = true);

    try {
      await _client.meetings.join(context: context, finalLink: _finalLink);
    } on QriibMeetException {
      if (mounted) {
        ScaffoldMessenger.of(context).showSnackBar(
          const SnackBar(content: Text('Unable to join the Qriib meeting.')),
        );
      }
    } finally {
      if (mounted) setState(() => _joining = false);
    }
  }

  @override
  void dispose() {
    _client.close();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Qriib Meet')),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(24),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text(
                _isConfigured
                    ? 'Ready to join with the public qriib_meet API.'
                    : 'Provide QRIIB_API_KEY, QRIIB_SECRET_KEY, and a fresh '
                          'QRIIB_FINAL_LINK with secure dart-defines.',
                textAlign: TextAlign.center,
              ),
              const SizedBox(height: 24),
              FilledButton.icon(
                onPressed: _isConfigured && !_joining ? _join : null,
                icon: _joining
                    ? const SizedBox.square(
                        dimension: 18,
                        child: CircularProgressIndicator(strokeWidth: 2),
                      )
                    : const Icon(Icons.video_call_outlined),
                label: const Text('Join meeting'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
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