diff --git a/lib/providers.dart b/lib/providers.dart index 3e16338..51c551d 100644 --- a/lib/providers.dart +++ b/lib/providers.dart @@ -9,7 +9,7 @@ import 'package:lightmeter/environment.dart'; import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/providers/equipment_profile_provider.dart'; import 'package:lightmeter/providers/metering_screen_layout_provider.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:platform/platform.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -28,7 +28,7 @@ class LightmeterProviders extends StatelessWidget { ]), builder: (_, snapshot) { if (snapshot.data != null) { - return ServiceProviders( + return ServiceProvider( caffeineService: const CaffeineService(), environment: env.copyWith(hasLightSensor: snapshot.data![1] as bool), hapticsService: const HapticsService(), diff --git a/lib/providers/equipment_profile_provider.dart b/lib/providers/equipment_profile_provider.dart index 07cacc7..747dcf0 100644 --- a/lib/providers/equipment_profile_provider.dart +++ b/lib/providers/equipment_profile_provider.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:lightmeter/utils/inherited_generics.dart'; import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart'; import 'package:uuid/uuid.dart'; @@ -35,7 +35,7 @@ class EquipmentProfileProviderState extends State { EquipmentProfile get _selectedProfile => _customProfiles.firstWhere( (e) => e.id == _selectedId, orElse: () { - ServiceProviders.userPreferencesServiceOf(context).selectedEquipmentProfileId = + ServiceProvider.userPreferencesServiceOf(context).selectedEquipmentProfileId = _defaultProfile.id; return _defaultProfile; }, @@ -44,8 +44,8 @@ class EquipmentProfileProviderState extends State { @override void initState() { super.initState(); - _selectedId = ServiceProviders.userPreferencesServiceOf(context).selectedEquipmentProfileId; - _customProfiles = ServiceProviders.userPreferencesServiceOf(context).equipmentProfiles; + _selectedId = ServiceProvider.userPreferencesServiceOf(context).selectedEquipmentProfileId; + _customProfiles = ServiceProvider.userPreferencesServiceOf(context).equipmentProfiles; } @override @@ -63,7 +63,7 @@ class EquipmentProfileProviderState extends State { setState(() { _selectedId = data.id; }); - ServiceProviders.userPreferencesServiceOf(context).selectedEquipmentProfileId = + ServiceProvider.userPreferencesServiceOf(context).selectedEquipmentProfileId = _selectedProfile.id; } @@ -96,7 +96,7 @@ class EquipmentProfileProviderState extends State { } void _refreshSavedProfiles() { - ServiceProviders.userPreferencesServiceOf(context).equipmentProfiles = _customProfiles; + ServiceProvider.userPreferencesServiceOf(context).equipmentProfiles = _customProfiles; setState(() {}); } } diff --git a/lib/providers/metering_screen_layout_provider.dart b/lib/providers/metering_screen_layout_provider.dart index 2f8e2e4..2f24bc5 100644 --- a/lib/providers/metering_screen_layout_provider.dart +++ b/lib/providers/metering_screen_layout_provider.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/data/models/metering_screen_layout_config.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:lightmeter/utils/inherited_generics.dart'; class MeteringScreenLayoutProvider extends StatefulWidget { @@ -18,7 +18,7 @@ class MeteringScreenLayoutProvider extends StatefulWidget { class MeteringScreenLayoutProviderState extends State { late final MeteringScreenLayoutConfig _config = - ServiceProviders.userPreferencesServiceOf(context).meteringScreenLayout; + ServiceProvider.userPreferencesServiceOf(context).meteringScreenLayout; @override Widget build(BuildContext context) { @@ -38,7 +38,7 @@ class MeteringScreenLayoutProviderState extends State()!; + static ServiceProvider _of(BuildContext context) { + return context.findAncestorWidgetOfExactType()!; } @override - bool updateShouldNotify(ServiceProviders oldWidget) => false; + bool updateShouldNotify(ServiceProvider oldWidget) => false; } diff --git a/lib/providers/user_preferences_provider.dart b/lib/providers/user_preferences_provider.dart index ac8e4f1..f9d847f 100644 --- a/lib/providers/user_preferences_provider.dart +++ b/lib/providers/user_preferences_provider.dart @@ -7,7 +7,7 @@ import 'package:lightmeter/data/models/supported_locale.dart'; import 'package:lightmeter/data/models/theme_type.dart'; import 'package:lightmeter/data/shared_prefs_service.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart'; enum _ListenableAspect { @@ -69,7 +69,7 @@ class UserPreferencesProvider extends StatefulWidget { class _UserPreferencesProviderState extends State with WidgetsBindingObserver { UserPreferencesService get userPreferencesService => - ServiceProviders.userPreferencesServiceOf(context); + ServiceProvider.userPreferencesServiceOf(context); late bool dynamicColor = userPreferencesService.dynamicColor; late EvSourceType evSourceType; @@ -81,9 +81,9 @@ class _UserPreferencesProviderState extends State @override void initState() { super.initState(); - evSourceType = ServiceProviders.userPreferencesServiceOf(context).evSourceType; + evSourceType = ServiceProvider.userPreferencesServiceOf(context).evSourceType; evSourceType = evSourceType == EvSourceType.sensor && - !ServiceProviders.environmentOf(context).hasLightSensor + !ServiceProvider.environmentOf(context).hasLightSensor ? EvSourceType.camera : evSourceType; WidgetsBinding.instance.addObserver(this); @@ -138,11 +138,11 @@ class _UserPreferencesProviderState extends State setState(() { dynamicColor = enable; }); - ServiceProviders.userPreferencesServiceOf(context).dynamicColor = enable; + ServiceProvider.userPreferencesServiceOf(context).dynamicColor = enable; } void toggleEvSourceType() { - if (!ServiceProviders.environmentOf(context).hasLightSensor) { + if (!ServiceProvider.environmentOf(context).hasLightSensor) { return; } setState(() { @@ -153,7 +153,7 @@ class _UserPreferencesProviderState extends State evSourceType = EvSourceType.camera; } }); - ServiceProviders.userPreferencesServiceOf(context).evSourceType = evSourceType; + ServiceProvider.userPreferencesServiceOf(context).evSourceType = evSourceType; } void setLocale(SupportedLocale locale) { @@ -161,7 +161,7 @@ class _UserPreferencesProviderState extends State setState(() { this.locale = locale; }); - ServiceProviders.userPreferencesServiceOf(context).locale = locale; + ServiceProvider.userPreferencesServiceOf(context).locale = locale; }); } @@ -169,21 +169,21 @@ class _UserPreferencesProviderState extends State setState(() { this.primaryColor = primaryColor; }); - ServiceProviders.userPreferencesServiceOf(context).primaryColor = primaryColor; + ServiceProvider.userPreferencesServiceOf(context).primaryColor = primaryColor; } void setStopType(StopType stopType) { setState(() { this.stopType = stopType; }); - ServiceProviders.userPreferencesServiceOf(context).stopType = stopType; + ServiceProvider.userPreferencesServiceOf(context).stopType = stopType; } void setThemeType(ThemeType themeType) { setState(() { this.themeType = themeType; }); - ServiceProviders.userPreferencesServiceOf(context).themeType = themeType; + ServiceProvider.userPreferencesServiceOf(context).themeType = themeType; } Brightness get _themeBrightness { diff --git a/lib/screens/metering/flow_metering.dart b/lib/screens/metering/flow_metering.dart index ef5d05c..24ca72c 100644 --- a/lib/screens/metering/flow_metering.dart +++ b/lib/screens/metering/flow_metering.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:lightmeter/interactors/metering_interactor.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:lightmeter/screens/metering/bloc_metering.dart'; import 'package:lightmeter/screens/metering/communication/bloc_communication_metering.dart'; import 'package:lightmeter/screens/metering/components/shared/volume_keys_notifier/notifier_volume_keys.dart'; @@ -20,15 +20,15 @@ class _MeteringFlowState extends State { Widget build(BuildContext context) { return InheritedWidgetBase( data: MeteringInteractor( - ServiceProviders.userPreferencesServiceOf(context), - ServiceProviders.caffeineServiceOf(context), - ServiceProviders.hapticsServiceOf(context), - ServiceProviders.permissionsServiceOf(context), - ServiceProviders.lightSensorServiceOf(context), - ServiceProviders.volumeEventsServiceOf(context), + ServiceProvider.userPreferencesServiceOf(context), + ServiceProvider.caffeineServiceOf(context), + ServiceProvider.hapticsServiceOf(context), + ServiceProvider.permissionsServiceOf(context), + ServiceProvider.lightSensorServiceOf(context), + ServiceProvider.volumeEventsServiceOf(context), )..initialize(), child: InheritedWidgetBase( - data: VolumeKeysNotifier(ServiceProviders.volumeEventsServiceOf(context)), + data: VolumeKeysNotifier(ServiceProvider.volumeEventsServiceOf(context)), child: MultiBlocProvider( providers: [ BlocProvider(create: (_) => MeteringCommunicationBloc()), diff --git a/lib/screens/metering/screen_metering.dart b/lib/screens/metering/screen_metering.dart index 4b386e1..0520551 100644 --- a/lib/screens/metering/screen_metering.dart +++ b/lib/screens/metering/screen_metering.dart @@ -7,7 +7,7 @@ import 'package:lightmeter/data/models/exposure_pair.dart'; import 'package:lightmeter/data/models/film.dart'; import 'package:lightmeter/data/models/metering_screen_layout_config.dart'; import 'package:lightmeter/providers/user_preferences_provider.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:lightmeter/screens/metering/bloc_metering.dart'; import 'package:lightmeter/screens/metering/components/bottom_controls/provider_bottom_controls.dart'; import 'package:lightmeter/screens/metering/components/camera_container/provider_container_camera.dart'; @@ -45,7 +45,7 @@ class MeteringScreen extends StatelessWidget { builder: (context, state) => MeteringBottomControlsProvider( ev: state is MeteringDataState ? state.ev : null, isMetering: state.isMetering, - onSwitchEvSourceType: ServiceProviders.environmentOf(context).hasLightSensor + onSwitchEvSourceType: ServiceProvider.environmentOf(context).hasLightSensor ? UserPreferencesProvider.of(context).toggleEvSourceType : null, onMeasure: () => context.read().add(const MeasureEvent()), diff --git a/lib/screens/settings/components/about/components/report_issue/widget_list_tile_report_issue.dart b/lib/screens/settings/components/about/components/report_issue/widget_list_tile_report_issue.dart index 0d66e7b..4af82da 100644 --- a/lib/screens/settings/components/about/components/report_issue/widget_list_tile_report_issue.dart +++ b/lib/screens/settings/components/about/components/report_issue/widget_list_tile_report_issue.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:url_launcher/url_launcher.dart'; class ReportIssueListTile extends StatelessWidget { @@ -13,7 +13,7 @@ class ReportIssueListTile extends StatelessWidget { title: Text(S.of(context).reportIssue), onTap: () { launchUrl( - Uri.parse(ServiceProviders.environmentOf(context).issuesReportUrl), + Uri.parse(ServiceProvider.environmentOf(context).issuesReportUrl), mode: LaunchMode.externalApplication, ); }, diff --git a/lib/screens/settings/components/about/components/source_code/widget_list_tile_source_code.dart b/lib/screens/settings/components/about/components/source_code/widget_list_tile_source_code.dart index 1326887..b23cf9a 100644 --- a/lib/screens/settings/components/about/components/source_code/widget_list_tile_source_code.dart +++ b/lib/screens/settings/components/about/components/source_code/widget_list_tile_source_code.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:url_launcher/url_launcher.dart'; class SourceCodeListTile extends StatelessWidget { @@ -13,7 +13,7 @@ class SourceCodeListTile extends StatelessWidget { title: Text(S.of(context).sourceCode), onTap: () { launchUrl( - Uri.parse(ServiceProviders.environmentOf(context).sourceCodeUrl), + Uri.parse(ServiceProvider.environmentOf(context).sourceCodeUrl), mode: LaunchMode.externalApplication, ); }, diff --git a/lib/screens/settings/components/about/components/write_email/widget_list_tile_write_email.dart b/lib/screens/settings/components/about/components/write_email/widget_list_tile_write_email.dart index 624da93..c2236c3 100644 --- a/lib/screens/settings/components/about/components/write_email/widget_list_tile_write_email.dart +++ b/lib/screens/settings/components/about/components/write_email/widget_list_tile_write_email.dart @@ -1,7 +1,7 @@ import 'package:clipboard/clipboard.dart'; import 'package:flutter/material.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:url_launcher/url_launcher.dart'; class WriteEmailListTile extends StatelessWidget { @@ -13,7 +13,7 @@ class WriteEmailListTile extends StatelessWidget { leading: const Icon(Icons.email), title: Text(S.of(context).writeEmail), onTap: () { - final email = ServiceProviders.environmentOf(context).contactEmail; + final email = ServiceProvider.environmentOf(context).contactEmail; final mailToUrl = Uri.parse('mailto:$email?subject=M3 Lightmeter'); canLaunchUrl(mailToUrl).then((canLaunch) { if (canLaunch) { diff --git a/lib/screens/settings/components/metering/components/calibration/components/calibration_dialog/widget_dialog_calibration.dart b/lib/screens/settings/components/metering/components/calibration/components/calibration_dialog/widget_dialog_calibration.dart index 2e5e6cb..7462dda 100644 --- a/lib/screens/settings/components/metering/components/calibration/components/calibration_dialog/widget_dialog_calibration.dart +++ b/lib/screens/settings/components/metering/components/calibration/components/calibration_dialog/widget_dialog_calibration.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:lightmeter/res/dimens.dart'; import 'package:lightmeter/screens/settings/components/metering/components/calibration/components/calibration_dialog/bloc_dialog_calibration.dart'; import 'package:lightmeter/screens/settings/components/metering/components/calibration/components/calibration_dialog/event_dialog_calibration.dart'; @@ -14,7 +14,7 @@ class CalibrationDialog extends StatelessWidget { @override Widget build(BuildContext context) { - final bool hasLightSensor = ServiceProviders.environmentOf(context).hasLightSensor; + final bool hasLightSensor = ServiceProvider.environmentOf(context).hasLightSensor; return AlertDialog( icon: const Icon(Icons.settings_brightness), titlePadding: Dimens.dialogIconTitlePadding, diff --git a/lib/screens/settings/flow_settings.dart b/lib/screens/settings/flow_settings.dart index 9b12ddc..05ef305 100644 --- a/lib/screens/settings/flow_settings.dart +++ b/lib/screens/settings/flow_settings.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/interactors/settings_interactor.dart'; -import 'package:lightmeter/providers/service_providers.dart'; +import 'package:lightmeter/providers/service_provider.dart'; import 'package:lightmeter/screens/settings/screen_settings.dart'; import 'package:lightmeter/utils/inherited_generics.dart'; @@ -11,10 +11,10 @@ class SettingsFlow extends StatelessWidget { Widget build(BuildContext context) { return InheritedWidgetBase( data: SettingsInteractor( - ServiceProviders.userPreferencesServiceOf(context), - ServiceProviders.caffeineServiceOf(context), - ServiceProviders.hapticsServiceOf(context), - ServiceProviders.volumeEventsServiceOf(context), + ServiceProvider.userPreferencesServiceOf(context), + ServiceProvider.caffeineServiceOf(context), + ServiceProvider.hapticsServiceOf(context), + ServiceProvider.volumeEventsServiceOf(context), ), child: const SettingsScreen(), );