connect method
Future<void>
connect({
- required JoinRequest request,
- required Function onDisconnect,
- required dynamic onRoomRecordingStatusChanged(
- bool activeRecording
- required dynamic onDataReceivedEvent(),
- required dynamic onAudioPlaybackStatusChanged(
- bool isPlaying
- required dynamic onMetadataChanged(
- String? metadata
Implementation
Future<void> connect({
required JoinRequest request,
required Function onDisconnect,
required Function(bool activeRecording) onRoomRecordingStatusChanged,
required Function(Map<String, dynamic>? data) onDataReceivedEvent,
required Function(bool isPlaying) onAudioPlaybackStatusChanged,
required Function(String? metadata) onMetadataChanged,
}) async {
try {
E2EEOptions? e2eeOptions;
if (request.e2ee && request.e2eeKey != null) {
final keyProvider = await BaseKeyProvider.create();
e2eeOptions = E2EEOptions(keyProvider: keyProvider);
await keyProvider.setKey(request.e2eeKey!);
}
room = Room(
roomOptions: RoomOptions(
adaptiveStream: request.adaptiveStream,
dynacast: request.dynacast,
defaultAudioPublishOptions: const AudioPublishOptions(
name: 'custom_audio_track_name',
audioBitrate: 32000,
),
e2eeOptions: e2eeOptions,
),
);
await room?.prepareConnection(request.url, request.token);
await room?.connect(
request.url,
request.token,
fastConnectOptions: FastConnectOptions(
microphone: TrackOption(track: audioTrack),
),
);
listener = room?.createListener();
publishStream(false);
room?.addListener(_onRoomDidUpdate);
_setUpListeners(
onDisconnect: onDisconnect,
onRoomRecordingStatusChanged: onRoomRecordingStatusChanged,
onDataReceivedEvent: onDataReceivedEvent,
onAudioPlaybackStatusChanged: onAudioPlaybackStatusChanged,
onMetadataChanged: onMetadataChanged,
);
_sortParticipants();
if (lkPlatformIs(PlatformType.android)) {
Hardware.instance.setSpeakerphoneOn(true);
}
if (lkPlatformIs(PlatformType.iOS) && room != null) {
ReplayKitChannel.listenMethodChannel(room!);
}
} catch (error) {
log('Could not connect $error');
}
}