diff --git a/lib/screens/metering/bloc_metering.dart b/lib/screens/metering/bloc_metering.dart index e7da159..cbb0356 100644 --- a/lib/screens/metering/bloc_metering.dart +++ b/lib/screens/metering/bloc_metering.dart @@ -40,7 +40,6 @@ class MeteringBloc extends Bloc { .listen(onCommunicationState); on(_onEquipmentProfileChanged); - on(_onFilmChanged); on(_onIsoChanged); on(_onNdChanged); on(_onMeasure, transformer: droppable()); @@ -116,29 +115,6 @@ class MeteringBloc extends Bloc { } } - void _onFilmChanged(FilmChangedEvent event, Emitter emit) { - /// Find `IsoValue` with matching value - IsoValue iso = state.iso; - if (state.iso.value != event.film.iso && event.film != const Film.other()) { - iso = IsoValue.values.firstWhere( - (e) => e.value == event.film.iso, - orElse: () => state.iso, - ); - _meteringInteractor.iso = iso; - - /// If user selects 'Other' film we preserve currently selected ISO - /// and therefore only discard reciprocity formula - emit( - MeteringDataState( - ev100: state.ev100, - iso: iso, - nd: state.nd, - isMetering: state.isMetering, - ), - ); - } - } - void _onIsoChanged(IsoChangedEvent event, Emitter emit) { if (state.iso != event.isoValue) { _meteringInteractor.iso = event.isoValue; diff --git a/lib/screens/metering/components/camera_container/provider_container_camera.dart b/lib/screens/metering/components/camera_container/provider_container_camera.dart index 248d2c9..1d6d8c0 100644 --- a/lib/screens/metering/components/camera_container/provider_container_camera.dart +++ b/lib/screens/metering/components/camera_container/provider_container_camera.dart @@ -13,7 +13,6 @@ class CameraContainerProvider extends StatelessWidget { final ExposurePair? slowest; final IsoValue iso; final NdValue nd; - final ValueChanged onFilmChanged; final ValueChanged onIsoChanged; final ValueChanged onNdChanged; final List exposurePairs; @@ -23,7 +22,6 @@ class CameraContainerProvider extends StatelessWidget { required this.slowest, required this.iso, required this.nd, - required this.onFilmChanged, required this.onIsoChanged, required this.onNdChanged, required this.exposurePairs, @@ -43,7 +41,6 @@ class CameraContainerProvider extends StatelessWidget { slowest: slowest, iso: iso, nd: nd, - onFilmChanged: onFilmChanged, onIsoChanged: onIsoChanged, onNdChanged: onNdChanged, exposurePairs: exposurePairs, diff --git a/lib/screens/metering/components/camera_container/widget_container_camera.dart b/lib/screens/metering/components/camera_container/widget_container_camera.dart index 763be9c..944aa34 100644 --- a/lib/screens/metering/components/camera_container/widget_container_camera.dart +++ b/lib/screens/metering/components/camera_container/widget_container_camera.dart @@ -24,7 +24,6 @@ class CameraContainer extends StatelessWidget { final ExposurePair? slowest; final IsoValue iso; final NdValue nd; - final ValueChanged onFilmChanged; final ValueChanged onIsoChanged; final ValueChanged onNdChanged; final List exposurePairs; @@ -34,7 +33,6 @@ class CameraContainer extends StatelessWidget { required this.slowest, required this.iso, required this.nd, - required this.onFilmChanged, required this.onIsoChanged, required this.onNdChanged, required this.exposurePairs, @@ -59,7 +57,6 @@ class CameraContainer extends StatelessWidget { slowest: slowest, iso: iso, nd: nd, - onFilmChanged: onFilmChanged, onIsoChanged: onIsoChanged, onNdChanged: onNdChanged, ), diff --git a/lib/screens/metering/components/light_sensor_container/provider_container_light_sensor.dart b/lib/screens/metering/components/light_sensor_container/provider_container_light_sensor.dart index 7ddb387..1d7f822 100644 --- a/lib/screens/metering/components/light_sensor_container/provider_container_light_sensor.dart +++ b/lib/screens/metering/components/light_sensor_container/provider_container_light_sensor.dart @@ -12,7 +12,6 @@ class LightSensorContainerProvider extends StatelessWidget { final ExposurePair? slowest; final IsoValue iso; final NdValue nd; - final ValueChanged onFilmChanged; final ValueChanged onIsoChanged; final ValueChanged onNdChanged; final List exposurePairs; @@ -22,7 +21,6 @@ class LightSensorContainerProvider extends StatelessWidget { required this.slowest, required this.iso, required this.nd, - required this.onFilmChanged, required this.onIsoChanged, required this.onNdChanged, required this.exposurePairs, @@ -42,7 +40,6 @@ class LightSensorContainerProvider extends StatelessWidget { slowest: slowest, iso: iso, nd: nd, - onFilmChanged: onFilmChanged, onIsoChanged: onIsoChanged, onNdChanged: onNdChanged, exposurePairs: exposurePairs, diff --git a/lib/screens/metering/components/light_sensor_container/widget_container_light_sensor.dart b/lib/screens/metering/components/light_sensor_container/widget_container_light_sensor.dart index 8c254cc..2151ee0 100644 --- a/lib/screens/metering/components/light_sensor_container/widget_container_light_sensor.dart +++ b/lib/screens/metering/components/light_sensor_container/widget_container_light_sensor.dart @@ -11,7 +11,6 @@ class LightSensorContainer extends StatelessWidget { final ExposurePair? slowest; final IsoValue iso; final NdValue nd; - final ValueChanged onFilmChanged; final ValueChanged onIsoChanged; final ValueChanged onNdChanged; final List exposurePairs; @@ -21,7 +20,6 @@ class LightSensorContainer extends StatelessWidget { required this.slowest, required this.iso, required this.nd, - required this.onFilmChanged, required this.onIsoChanged, required this.onNdChanged, required this.exposurePairs, @@ -38,7 +36,6 @@ class LightSensorContainer extends StatelessWidget { slowest: slowest, iso: iso, nd: nd, - onFilmChanged: onFilmChanged, onIsoChanged: onIsoChanged, onNdChanged: onNdChanged, ), diff --git a/lib/screens/metering/components/shared/readings_container/widget_container_readings.dart b/lib/screens/metering/components/shared/readings_container/widget_container_readings.dart index 524c3d9..1f2b75a 100644 --- a/lib/screens/metering/components/shared/readings_container/widget_container_readings.dart +++ b/lib/screens/metering/components/shared/readings_container/widget_container_readings.dart @@ -14,7 +14,6 @@ class ReadingsContainer extends StatelessWidget { final ExposurePair? slowest; final IsoValue iso; final NdValue nd; - final ValueChanged onFilmChanged; final ValueChanged onIsoChanged; final ValueChanged onNdChanged; @@ -23,7 +22,6 @@ class ReadingsContainer extends StatelessWidget { required this.slowest, required this.iso, required this.nd, - required this.onFilmChanged, required this.onIsoChanged, required this.onNdChanged, super.key, diff --git a/lib/screens/metering/event_metering.dart b/lib/screens/metering/event_metering.dart index 82805f3..0a39844 100644 --- a/lib/screens/metering/event_metering.dart +++ b/lib/screens/metering/event_metering.dart @@ -10,12 +10,6 @@ class EquipmentProfileChangedEvent extends MeteringEvent { const EquipmentProfileChangedEvent(this.equipmentProfileData); } -class FilmChangedEvent extends MeteringEvent { - final Film film; - - const FilmChangedEvent(this.film); -} - class IsoChangedEvent extends MeteringEvent { final IsoValue isoValue; diff --git a/lib/screens/metering/screen_metering.dart b/lib/screens/metering/screen_metering.dart index c4f8f30..81cca54 100644 --- a/lib/screens/metering/screen_metering.dart +++ b/lib/screens/metering/screen_metering.dart @@ -13,7 +13,6 @@ import 'package:lightmeter/screens/metering/components/camera_container/provider import 'package:lightmeter/screens/metering/components/light_sensor_container/provider_container_light_sensor.dart'; import 'package:lightmeter/screens/metering/event_metering.dart'; import 'package:lightmeter/screens/metering/state_metering.dart'; -import 'package:lightmeter/screens/metering/utils/film_listener.dart'; import 'package:lightmeter/screens/metering/utils/listener_metering_layout_feature.dart'; import 'package:lightmeter/screens/metering/utils/listsner_equipment_profiles.dart'; import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart'; @@ -35,8 +34,6 @@ class MeteringScreen extends StatelessWidget { ev: state is MeteringDataState ? state.ev : null, iso: state.iso, nd: state.nd, - onFilmChanged: (value) => - context.read().add(FilmChangedEvent(value)), onIsoChanged: (value) => context.read().add(IsoChangedEvent(value)), onNdChanged: (value) => context.read().add(NdChangedEvent(value)), ), @@ -72,23 +69,18 @@ class _InheritedListeners extends StatelessWidget { @override Widget build(BuildContext context) { - return FilmListener( + return EquipmentProfileListener( onDidChangeDependencies: (value) { - context.read().add(FilmChangedEvent(value)); + context.read().add(EquipmentProfileChangedEvent(value)); }, - child: EquipmentProfileListener( + child: MeteringScreenLayoutFeatureListener( + feature: MeteringScreenLayoutFeature.filmPicker, onDidChangeDependencies: (value) { - context.read().add(EquipmentProfileChangedEvent(value)); + if (!value) { + FilmsProvider.of(context).setFilm(const Film.other()); + } }, - child: MeteringScreenLayoutFeatureListener( - feature: MeteringScreenLayoutFeature.filmPicker, - onDidChangeDependencies: (value) { - if (!value) { - FilmsProvider.of(context).setFilm(const Film.other()); - } - }, - child: child, - ), + child: child, ), ); } @@ -98,7 +90,6 @@ class MeteringContainerBuidler extends StatelessWidget { final double? ev; final IsoValue iso; final NdValue nd; - final ValueChanged onFilmChanged; final ValueChanged onIsoChanged; final ValueChanged onNdChanged; @@ -106,7 +97,6 @@ class MeteringContainerBuidler extends StatelessWidget { required this.ev, required this.iso, required this.nd, - required this.onFilmChanged, required this.onIsoChanged, required this.onNdChanged, }); @@ -130,7 +120,6 @@ class MeteringContainerBuidler extends StatelessWidget { slowest: slowest, iso: iso, nd: nd, - onFilmChanged: onFilmChanged, onIsoChanged: onIsoChanged, onNdChanged: onNdChanged, exposurePairs: exposurePairs, @@ -140,7 +129,6 @@ class MeteringContainerBuidler extends StatelessWidget { slowest: slowest, iso: iso, nd: nd, - onFilmChanged: onFilmChanged, onIsoChanged: onIsoChanged, onNdChanged: onNdChanged, exposurePairs: exposurePairs, diff --git a/lib/screens/metering/utils/equipment_profile_listener.dart b/lib/screens/metering/utils/equipment_profile_listener.dart deleted file mode 100644 index 68d03dc..0000000 --- a/lib/screens/metering/utils/equipment_profile_listener.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart'; -import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart'; - -class EquipmentProfileListener extends StatefulWidget { - final ValueChanged onDidChangeDependencies; - final Widget child; - - const EquipmentProfileListener({ - required this.onDidChangeDependencies, - required this.child, - super.key, - }); - - @override - State createState() => _EquipmentProfileListenerState(); -} - -class _EquipmentProfileListenerState extends State { - @override - void didChangeDependencies() { - super.didChangeDependencies(); - widget.onDidChangeDependencies(EquipmentProfiles.selectedOf(context)); - } - - @override - Widget build(BuildContext context) { - return widget.child; - } -} diff --git a/lib/screens/metering/utils/film_listener.dart b/lib/screens/metering/utils/film_listener.dart deleted file mode 100644 index e2df8e0..0000000 --- a/lib/screens/metering/utils/film_listener.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart'; -import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart'; - -class FilmListener extends StatefulWidget { - final ValueChanged onDidChangeDependencies; - final Widget child; - - const FilmListener({ - required this.onDidChangeDependencies, - required this.child, - super.key, - }); - - @override - State createState() => _FilmListenerState(); -} - -class _FilmListenerState extends State { - @override - void didChangeDependencies() { - super.didChangeDependencies(); - widget.onDidChangeDependencies(Films.selectedOf(context)); - } - - @override - Widget build(BuildContext context) { - return widget.child; - } -} diff --git a/test/screens/metering/bloc_metering_test.dart b/test/screens/metering/bloc_metering_test.dart index 58db35f..fbffbbc 100644 --- a/test/screens/metering/bloc_metering_test.dart +++ b/test/screens/metering/bloc_metering_test.dart @@ -361,88 +361,6 @@ void main() { }, ); - group( - '`FilmChangedEvent`', - () { - blocTest( - 'Pick different film with different ISO', - build: () => bloc, - seed: () => MeteringDataState( - ev100: 1.0, - iso: const IsoValue(100, StopType.full), - nd: NdValue.values.first, - isMetering: false, - ), - act: (bloc) async { - bloc.add(const FilmChangedEvent(FomapanFilm.creative200())); - }, - verify: (_) { - verify(() => meteringInteractor.iso = const IsoValue(200, StopType.full)).called(1); - }, - expect: () => [ - isA() - .having((state) => state.ev100, 'ev100', 1.0) - .having((state) => state.ev, 'ev', 2.0) - .having((state) => state.iso, 'iso', const IsoValue(200, StopType.full)) - .having((state) => state.nd, 'nd', NdValue.values.first) - .having((state) => state.isMetering, 'isMetering', false), - ], - ); - - blocTest( - 'Pick different film with same ISO', - build: () => bloc, - seed: () => MeteringDataState( - ev100: 1.0, - iso: const IsoValue(100, StopType.full), - nd: NdValue.values.first, - isMetering: false, - ), - act: (bloc) async { - bloc.add(const FilmChangedEvent(IlfordFilm.delta100())); - }, - verify: (_) { - verifyNever(() => meteringInteractor.iso = const IsoValue(100, StopType.full)); - }, - expect: () => [], - ); - - blocTest( - 'Pick same film', - build: () => bloc, - seed: () => MeteringDataState( - ev100: 1.0, - iso: const IsoValue(100, StopType.full), - nd: NdValue.values.first, - isMetering: false, - ), - act: (bloc) async { - bloc.add(const FilmChangedEvent(FomapanFilm.creative100())); - }, - expect: () => [], - ); - - blocTest( - 'Pick `Film.other()`', - build: () => bloc, - seed: () => MeteringDataState( - ev100: 1.0, - iso: const IsoValue(100, StopType.full), - nd: NdValue.values.first, - isMetering: false, - ), - act: (bloc) async { - bloc.add(const FilmChangedEvent(Film.other())); - }, - verify: (_) { - verifyNever(() => meteringInteractor.iso = const IsoValue(0, StopType.full)); - verifyNever(() => meteringInteractor.responseVibration()); - }, - expect: () => [], - ); - }, - ); - group( '`EquipmentProfileChangedEvent`', () {