rqmeet_flutter_sdk 1.0.2
rqmeet_flutter_sdk: ^1.0.2 copied to clipboard
A high-level Flutter SDK for integrating RQMeet video meetings. Includes ready-to-use UI components (PreJoin, MeetingRoom) and a powerful real-time client.
RQMeet Flutter SDK #
A Flutter SDK for integrating RQMeet video meetings into mobile and web applications.
Features #
- πΉ Video/Audio meetings
- π€ Audio/Video controls
- π± Screen sharing
- π¬ In-meeting chat
- π₯ Recording support
- π Real-time events
- π¨ Customizable UI components
Installation #
Add this to your package's pubspec.yaml file:
dependencies:
rqmeet_flutter_sdk: ^1.0.0
Quick Start #
import 'package:rqmeet_flutter_sdk/rqmeet_flutter_sdk.dart';
// Initialize the client
final client = RQMeetClient(
apiKey: 'your_api_key',
);
// Create a meeting
final meeting = await client.createMeeting(
MeetingConfig(name: 'Team Standup'),
);
// Join the meeting
final room = await client.joinMeeting(
JoinMeetingOptions(
meetingId: meeting.id,
participantName: 'John Doe',
),
);
// Listen to events
room.onParticipantJoined.listen((participant) {
print('${participant.name} joined');
});
// Leave the meeting
await room.leave();
Usage #
Initialize Client #
final client = RQMeetClient(
apiKey: 'your_api_key',
baseUrl: 'https://developer.rqmeet.com', // optional
);
Create Meeting #
final meeting = await client.createMeeting(
MeetingConfig(
name: 'My Meeting',
maxParticipants: 50,
enableRecording: true,
enableChat: true,
),
);
Join Meeting #
final room = await client.joinMeeting(
JoinMeetingOptions(
meetingId: 'meeting_id',
participantName: 'John Doe',
participantId: 'user_123',
audioEnabled: true,
videoEnabled: false,
),
);
Media Controls #
// Toggle audio
await room.toggleAudio();
// Toggle video
await room.toggleVideo();
// Start screen sharing
await room.startScreenShare();
// Stop screen sharing
await room.stopScreenShare();
UI Components #
// Meeting view with controls
RQMeetingView(
room: room,
onLeave: () => Navigator.pop(context),
);
// Video grid
RQVideoGrid(
room: room,
gridConfig: GridConfig(
columns: 2,
spacing: 8,
),
);
// Participant tile
RQParticipantTile(
participant: participant,
showName: true,
showAudioIndicator: true,
);
// Control bar
RQControlBar(
room: room,
showChat: true,
showScreenShare: true,
);
Events #
// Participant events
room.onParticipantJoined.listen((p) => print('Joined: ${p.name}'));
room.onParticipantLeft.listen((p) => print('Left: ${p.name}'));
// Connection events
room.onConnected.listen((_) => print('Connected'));
room.onDisconnected.listen((reason) => print('Disconnected: $reason'));
room.onReconnecting.listen((_) => print('Reconnecting...'));
// Track events
room.onTrackSubscribed.listen((event) => print('Track subscribed'));
room.onTrackUnsubscribed.listen((event) => print('Track unsubscribed'));
// Chat events
room.onMessageReceived.listen((msg) => print('Message: ${msg.content}'));
Permissions #
Android #
Add to AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
iOS #
Add to Info.plist:
<key>NSCameraUsageDescription</key>
<string>Camera is required for video calls</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone is required for audio calls</string>
License #
MIT