GemCameraPlayerController constructor
- required DataSource dataSource,
- CameraConfiguration? configurationOverride,
Creates a controller based on a DataSource which contains Camera data.
Implementation
GemCameraPlayerController({
required DataSource dataSource,
this.configurationOverride,
}) : super(
GemCameraPlayerValue(
dataSource: dataSource,
status: GemCameraPlayerStatus.loading,
),
) {
if (!dataSource.isDataTypeAvailable(DataType.camera)) {
value = value.copyWith(status: GemCameraPlayerStatus.error);
}
final DataSourceListener listener = DataSourceListener(
onNewData: (SenseData data) {
if (_isDisposed) {
return;
}
if (data is! CameraImpl) {
return;
}
final GemCameraPlayerStatus status = value.status;
if (status == GemCameraPlayerStatus.loading ||
status == GemCameraPlayerStatus.playing ||
status == GemCameraPlayerStatus.ended) {
value = value.copyWith(
camera: data,
status: GemCameraPlayerStatus.playing,
);
}
},
onPlayingStatusChanged: (DataType dataType, PlayingStatus status) {
if (_isDisposed) {
return;
}
if (dataType == DataType.camera && status == PlayingStatus.stopped) {
value = value.copyWith(status: GemCameraPlayerStatus.ended);
}
},
);
final Playback? playback = dataSource.playback;
if (playback != null && playback.state == PlayingStatus.stopped) {
value = value.copyWith(status: GemCameraPlayerStatus.ended);
}
dataSource.addListener(
listener: listener,
dataType: DataType.camera,
);
value = value.copyWith(listener: listener);
}