setSourceEnabled method

Future<LocalTrackPublication<LocalTrack>?> setSourceEnabled(
  1. TrackSource source,
  2. bool enabled
)

A convenience method to publish a track for a specific TrackSource. This is the recommended method to publish tracks.

Implementation

Future<LocalTrackPublication?> setSourceEnabled(
    TrackSource source, bool enabled) async {
  logger.fine('setSourceEnabled(source: $source, enabled: $enabled)');
  final publication = getTrackPublicationBySource(source);
  if (publication != null) {
    if (enabled) {
      await publication.unmute();
    } else {
      if (source == TrackSource.screenShareVideo) {
        await unpublishTrack(publication.sid);
      } else {
        await publication.mute();
      }
    }
    return publication;
  } else if (enabled) {
    if (source == TrackSource.camera) {
      final track = await LocalVideoTrack.createCameraTrack(
          room.roomOptions?.defaultCameraCaptureOptions);
      return await publishVideoTrack(track);
    } else if (source == TrackSource.microphone) {
      final track = await LocalAudioTrack.create(
          room.roomOptions?.defaultAudioCaptureOptions);
      return await publishAudioTrack(track);
    } else if (source == TrackSource.screenShareVideo) {
      final track = await LocalVideoTrack.createScreenShareTrack(
          room.roomOptions?.defaultScreenShareCaptureOptions);
      return await publishVideoTrack(track);
    }
  }
  return null;
}