m3_lightmeter/lib/screens/metering/components/camera_container/mock_bloc_container_camera.dart
Vadim 73d0c32323
Hide Pro features from the metering screen (#147)
* implemented `MockCameraContainerBloc` to stub camera on simulator

* hide pro features from metering screen

* disable pro features in settings

* use closed child background color in `AnimatedDialog`

* adjust `AnimatedDialogPicker` to items count

* close `AnimatedDialog` through context

* cleanup

* fixed `ReadingValueContainer` text color

* removed legacy translations

* fixed tests

* fixed `AnimatedDialog` scaling

* added `evFromImage` test

* added no EXIF test to `evFromImage`
2024-01-13 18:20:58 +01:00

80 lines
2.2 KiB
Dart

part of 'bloc_container_camera.dart';
class MockCameraContainerBloc extends CameraContainerBloc {
MockCameraContainerBloc(
super._meteringInteractor,
super.communicationBloc,
);
@override
Future<void> _onRequestPermission(_, Emitter emit) async {
add(const InitializeEvent());
}
@override
Future<void> _onOpenAppSettings(_, Emitter emit) async {
_meteringInteractor.openAppSettings();
}
@override
Future<void> _onInitialize(_, Emitter emit) async {
emit(const CameraLoadingState());
try {
_cameraController = CameraController(
const CameraDescription(name: '0', lensDirection: CameraLensDirection.back, sensorOrientation: 0),
ResolutionPreset.low,
enableAudio: false,
);
_zoomRange = const RangeValues(1, 6);
_currentZoom = _zoomRange!.start;
_exposureOffsetRange = const RangeValues(-4, 4);
_exposureStep = 0.1;
_currentExposureOffset = 0.0;
emit(CameraInitializedState(_cameraController!));
_emitActiveState(emit);
} catch (e) {
emit(const CameraErrorState(CameraErrorType.other));
}
}
@override
Future<void> _onZoomChanged(ZoomChangedEvent event, Emitter emit) async {
if (event.value >= _zoomRange!.start && event.value <= _zoomRange!.end) {
_currentZoom = event.value;
_emitActiveState(emit);
}
}
@override
Future<void> _onExposureOffsetChanged(ExposureOffsetChangedEvent event, Emitter emit) async {
_currentExposureOffset = event.value;
_emitActiveState(emit);
}
@override
Future<void> _onExposureOffsetResetEvent(ExposureOffsetResetEvent event, Emitter emit) async {
_meteringInteractor.quickVibration();
add(const ExposureOffsetChangedEvent(0));
}
@override
Future<void> _onExposureSpotChangedEvent(ExposureSpotChangedEvent event, Emitter emit) async {}
@override
bool get _canTakePhoto => PlatformConfig.cameraStubImage.isNotEmpty;
@override
Future<double?> _takePhoto() async {
try {
final bytes = (await rootBundle.load(PlatformConfig.cameraStubImage)).buffer.asUint8List();
return await evFromImage(bytes);
} catch (e) {
log(e.toString());
return null;
}
}
}