Participant constructor
Participant({
- required String id,
- required String displayName,
- required bool isLocal,
- required ParticipantPinState pinState,
- required Mode mode,
- required EventEmitter eventEmitter,
- required Function enablePeerMic,
- required Function disablePeerMic,
- required Function enablePeerCamera,
- required Function disablePeerCamera,
- required Function setConsumerQuality,
- required Function getStats,
- required Function setViewPort,
- required Function removePeer,
- required Function participantPinStateChanged,
- Map<
String, dynamic> ? metaData,
Implementation
Participant({
required this.id,
required this.displayName,
required this.isLocal,
required this.pinState,
required this.mode,
required EventEmitter eventEmitter,
required Function enablePeerMic,
required Function disablePeerMic,
required Function enablePeerCamera,
required Function disablePeerCamera,
required Function setConsumerQuality,
required Function getStats,
required Function setViewPort,
required Function removePeer,
required Function participantPinStateChanged,
this.metaData
}) {
//
_eventEmitter = eventEmitter;
//
_enablePeerMic = enablePeerMic;
//
_disablePeerMic = disablePeerMic;
//
_enablePeerCamera = enablePeerCamera;
//
_disablePeerCamera = disablePeerCamera;
//
_setConsumerQuality = setConsumerQuality;
//
_setViewPort = setViewPort;
//
_removePeer = removePeer;
//
_getStats = getStats;
_participantPinStateChanged = participantPinStateChanged;
//
_participantEventEmitter = EventEmitter();
//
streams = {};
// handle stream-enabled
_eventEmitter.on(
"stream-enabled-$id",
(data) {
if (data['audio'] != null) {
final consumer = data["audio"];
final Stream newStream = Stream(
consumer: consumer,
);
_addConsumer(newStream);
} else if (data["renderer"] != null && data["video"] != null) {
final consumer = data["video"];
final renderer = data["renderer"];
final Stream newStream = Stream(
consumer: consumer,
renderer: renderer,
);
_addConsumer(newStream);
} else if (data["shareRenderer"] != null && data["share"] != null) {
final consumer = data["share"];
final shareRenderer = data["shareRenderer"];
final Stream newStream = Stream(
consumer: consumer,
renderer: shareRenderer,
);
_addConsumer(newStream);
}
},
);
// handle stream-disabled
_eventEmitter.on(
"stream-disabled-$id",
(data) {
if (data['audioConsumerId'] != null) {
final consumerId = data['audioConsumerId'];
_removeConsumer(consumerId);
} else if (data["renderer"] != null &&
data["videoConsumerId"] != null) {
final consumerId = data['videoConsumerId'];
_removeConsumer(consumerId);
} else if (data["shareRenderer"] != null &&
data["shareConsumerId"] != null) {
final consumerId = data['shareConsumerId'];
_removeConsumer(consumerId);
}
},
);
// handle stream-paused
_eventEmitter.on(
"stream-paused-$id",
(data) {
String audioKeyType = 'audioConsumerId';
String videoKeyType = 'videoConsumerId';
String shareKeyType = 'shareConsumerId';
if (data[audioKeyType] != null) {
_pauseConsumer(audioKeyType, data);
} else if (data[videoKeyType] != null) {
_pauseConsumer(videoKeyType, data);
} else if (data[shareKeyType] != null) {
_pauseConsumer(shareKeyType, data);
}
},
);
// handle stream-resumed
_eventEmitter.on(
"stream-resumed-$id",
(data) {
String audioKeyType = 'audioConsumerId';
String videoKeyType = 'videoConsumerId';
String shareKeyType = 'shareConsumerId';
if (data[audioKeyType] != null) {
_resumeConsumer(audioKeyType, data);
} else if (data[videoKeyType] != null) {
_resumeConsumer(videoKeyType, data);
} else if (data[shareKeyType] != null) {
_resumeConsumer(shareKeyType, data);
}
},
);
// handle quality-changed
_eventEmitter.on(
"quality-changed-$id",
(data) {
_setLayers(data['spatialLayer'], data['temporalLayer'],
data['prevQuality'], data['currentQuality']);
},
);
_eventEmitter.on("pin-state-change-$id", (data) {
_setPinState(data['state']);
});
_eventEmitter.on("participant-mode-changed-$id", (data) {
mode = ModeExtension.parseToEnum(data['mode']);
});
}