diff --git a/lib/application.dart b/lib/application.dart index b675b4b..142af95 100644 --- a/lib/application.dart +++ b/lib/application.dart @@ -5,7 +5,7 @@ import 'package:lightmeter/data/models/supported_locale.dart'; import 'package:lightmeter/environment.dart'; import 'package:lightmeter/generated/l10n.dart'; import 'package:lightmeter/providers.dart'; -import 'package:lightmeter/providers/enum_providers.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/res/theme.dart'; import 'package:lightmeter/screens/metering/flow_metering.dart'; import 'package:lightmeter/screens/settings/flow_settings.dart'; @@ -22,8 +22,8 @@ class Application extends StatelessWidget { builder: (context, ready) { if (ready) { final theme = themeFrom( - EnumProviders.primaryColorOf(context), - EnumProviders.brightnessOf(context), + UserPreferencesProvider.primaryColorOf(context), + UserPreferencesProvider.brightnessOf(context), ); final systemIconsBrightness = ThemeData.estimateBrightnessForColor(theme.colorScheme.onSurface); @@ -38,7 +38,7 @@ class Application extends StatelessWidget { ), child: MaterialApp( theme: theme, - locale: Locale(EnumProviders.localeOf(context).intlName), + locale: Locale(UserPreferencesProvider.localeOf(context).intlName), localizationsDelegates: const [ S.delegate, GlobalMaterialLocalizations.delegate, diff --git a/lib/providers.dart b/lib/providers.dart index c4d893b..3e16338 100644 --- a/lib/providers.dart +++ b/lib/providers.dart @@ -6,7 +6,7 @@ import 'package:lightmeter/data/permissions_service.dart'; import 'package:lightmeter/data/shared_prefs_service.dart'; import 'package:lightmeter/data/volume_events_service.dart'; import 'package:lightmeter/environment.dart'; -import 'package:lightmeter/providers/enum_providers.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'; @@ -36,7 +36,7 @@ class LightmeterProviders extends StatelessWidget { permissionsService: const PermissionsService(), userPreferencesService: UserPreferencesService(snapshot.data![0] as SharedPreferences), volumeEventsService: const VolumeEventsService(LocalPlatform()), - child: EnumProviders( + child: UserPreferencesProvider( child: MeteringScreenLayoutProvider( child: EquipmentProfileProvider( child: Builder( diff --git a/lib/providers/enum_providers.dart b/lib/providers/user_preferences_provider.dart similarity index 88% rename from lib/providers/enum_providers.dart rename to lib/providers/user_preferences_provider.dart index 5e98a9c..ac8e4f1 100644 --- a/lib/providers/enum_providers.dart +++ b/lib/providers/user_preferences_provider.dart @@ -20,13 +20,13 @@ enum _ListenableAspect { themeType, } -class EnumProviders extends StatefulWidget { +class UserPreferencesProvider extends StatefulWidget { final Widget child; - const EnumProviders({required this.child, super.key}); + const UserPreferencesProvider({required this.child, super.key}); - static _EnumProvidersState of(BuildContext context) { - return context.findAncestorStateOfType<_EnumProvidersState>()!; + static _UserPreferencesProviderState of(BuildContext context) { + return context.findAncestorStateOfType<_UserPreferencesProviderState>()!; } static Brightness brightnessOf(BuildContext context) { @@ -57,15 +57,17 @@ class EnumProviders extends StatefulWidget { return _inheritFrom(context, _ListenableAspect.themeType).themeType; } - static _EnumProvidersModel _inheritFrom(BuildContext context, _ListenableAspect aspect) { - return InheritedModel.inheritFrom<_EnumProvidersModel>(context, aspect: aspect)!; + static _UserPreferencesProviderModel _inheritFrom( + BuildContext context, _ListenableAspect aspect) { + return InheritedModel.inheritFrom<_UserPreferencesProviderModel>(context, aspect: aspect)!; } @override - State createState() => _EnumProvidersState(); + State createState() => _UserPreferencesProviderState(); } -class _EnumProvidersState extends State with WidgetsBindingObserver { +class _UserPreferencesProviderState extends State + with WidgetsBindingObserver { UserPreferencesService get userPreferencesService => ServiceProviders.userPreferencesServiceOf(context); @@ -118,7 +120,7 @@ class _EnumProvidersState extends State with WidgetsBindingObserv dynamicPrimaryColor = null; state = DynamicColorState.unavailable; } - return _EnumProvidersModel( + return _UserPreferencesProviderModel( brightness: _themeBrightness, dynamicColorState: state, evSourceType: evSourceType, @@ -196,7 +198,7 @@ class _EnumProvidersState extends State with WidgetsBindingObserv } } -class _EnumProvidersModel extends InheritedModel<_ListenableAspect> { +class _UserPreferencesProviderModel extends InheritedModel<_ListenableAspect> { final Brightness brightness; final DynamicColorState dynamicColorState; final EvSourceType evSourceType; @@ -205,7 +207,7 @@ class _EnumProvidersModel extends InheritedModel<_ListenableAspect> { final StopType stopType; final ThemeType themeType; - const _EnumProvidersModel({ + const _UserPreferencesProviderModel({ required this.brightness, required this.dynamicColorState, required this.evSourceType, @@ -217,7 +219,7 @@ class _EnumProvidersModel extends InheritedModel<_ListenableAspect> { }); @override - bool updateShouldNotify(_EnumProvidersModel oldWidget) { + bool updateShouldNotify(_UserPreferencesProviderModel oldWidget) { return brightness != oldWidget.brightness || dynamicColorState != oldWidget.dynamicColorState || evSourceType != oldWidget.evSourceType || @@ -229,7 +231,7 @@ class _EnumProvidersModel extends InheritedModel<_ListenableAspect> { @override bool updateShouldNotifyDependent( - _EnumProvidersModel oldWidget, + _UserPreferencesProviderModel oldWidget, Set<_ListenableAspect> dependencies, ) { return (brightness != oldWidget.brightness && diff --git a/lib/screens/metering/components/bottom_controls/widget_bottom_controls.dart b/lib/screens/metering/components/bottom_controls/widget_bottom_controls.dart index 5332cea..54ea810 100644 --- a/lib/screens/metering/components/bottom_controls/widget_bottom_controls.dart +++ b/lib/screens/metering/components/bottom_controls/widget_bottom_controls.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/data/models/ev_source_type.dart'; -import 'package:lightmeter/providers/enum_providers.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/res/dimens.dart'; import 'package:lightmeter/screens/metering/components/bottom_controls/components/measure_button/widget_button_measure.dart'; @@ -42,7 +42,7 @@ class MeteringBottomControls extends StatelessWidget { child: IconButton( onPressed: onSwitchEvSourceType, icon: Icon( - EnumProviders.evSourceTypeOf(context) != EvSourceType.camera + UserPreferencesProvider.evSourceTypeOf(context) != EvSourceType.camera ? Icons.camera_rear : Icons.wb_incandescent, ), diff --git a/lib/screens/metering/screen_metering.dart b/lib/screens/metering/screen_metering.dart index 7702fbc..4b386e1 100644 --- a/lib/screens/metering/screen_metering.dart +++ b/lib/screens/metering/screen_metering.dart @@ -6,7 +6,7 @@ import 'package:lightmeter/data/models/ev_source_type.dart'; 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/enum_providers.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/providers/service_providers.dart'; import 'package:lightmeter/screens/metering/bloc_metering.dart'; import 'package:lightmeter/screens/metering/components/bottom_controls/provider_bottom_controls.dart'; @@ -46,7 +46,7 @@ class MeteringScreen extends StatelessWidget { ev: state is MeteringDataState ? state.ev : null, isMetering: state.isMetering, onSwitchEvSourceType: ServiceProviders.environmentOf(context).hasLightSensor - ? EnumProviders.of(context).toggleEvSourceType + ? UserPreferencesProvider.of(context).toggleEvSourceType : null, onMeasure: () => context.read().add(const MeasureEvent()), onSettings: () { @@ -111,7 +111,7 @@ class _MeteringContainerBuidler extends StatelessWidget { final fastest = exposurePairs.isNotEmpty ? exposurePairs.first : null; final slowest = exposurePairs.isNotEmpty ? exposurePairs.last : null; // Doubled build here when switching evSourceType. As new source bloc fires a new state on init - return EnumProviders.evSourceTypeOf(context) == EvSourceType.camera + return UserPreferencesProvider.evSourceTypeOf(context) == EvSourceType.camera ? CameraContainerProvider( fastest: fastest, slowest: slowest, @@ -142,7 +142,7 @@ class _MeteringContainerBuidler extends StatelessWidget { } /// Depending on the `stopType` the exposure pairs list length is multiplied by 1,2 or 3 - final StopType stopType = EnumProviders.stopTypeOf(context); + final StopType stopType = UserPreferencesProvider.stopTypeOf(context); final int evSteps = (ev * (stopType.index + 1)).round(); final EquipmentProfile equipmentProfile = context.listen(); diff --git a/lib/screens/settings/components/general/components/language/widget_list_tile_language.dart b/lib/screens/settings/components/general/components/language/widget_list_tile_language.dart index 3ae6d20..663c634 100644 --- a/lib/screens/settings/components/general/components/language/widget_list_tile_language.dart +++ b/lib/screens/settings/components/general/components/language/widget_list_tile_language.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/data/models/supported_locale.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/enum_providers.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/screens/settings/components/shared/dialog_picker.dart/widget_dialog_picker.dart'; class LanguageListTile extends StatelessWidget { @@ -12,20 +12,20 @@ class LanguageListTile extends StatelessWidget { return ListTile( leading: const Icon(Icons.language), title: Text(S.of(context).language), - trailing: Text(EnumProviders.localeOf(context).localizedName), + trailing: Text(UserPreferencesProvider.localeOf(context).localizedName), onTap: () { showDialog( context: context, builder: (_) => DialogPicker( icon: Icons.language, title: S.of(context).chooseLanguage, - selectedValue: EnumProviders.localeOf(context), + selectedValue: UserPreferencesProvider.localeOf(context), values: SupportedLocale.values, titleAdapter: (context, value) => value.localizedName, ), ).then((value) { if (value != null) { - EnumProviders.of(context).setLocale(value); + UserPreferencesProvider.of(context).setLocale(value); } }); }, diff --git a/lib/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart b/lib/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart index 8c798c3..1bcf6bc 100644 --- a/lib/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart +++ b/lib/screens/settings/components/metering/components/fractional_stops/widget_list_tile_fractional_stops.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/enum_providers.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/screens/settings/components/shared/dialog_picker.dart/widget_dialog_picker.dart'; import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart'; @@ -12,20 +12,20 @@ class StopTypeListTile extends StatelessWidget { return ListTile( leading: const Icon(Icons.straighten), title: Text(S.of(context).fractionalStops), - trailing: Text(_typeToString(context, EnumProviders.stopTypeOf(context))), + trailing: Text(_typeToString(context, UserPreferencesProvider.stopTypeOf(context))), onTap: () { showDialog( context: context, builder: (_) => DialogPicker( icon: Icons.straighten, title: S.of(context).showFractionalStops, - selectedValue: EnumProviders.stopTypeOf(context), + selectedValue: UserPreferencesProvider.stopTypeOf(context), values: StopType.values, titleAdapter: _typeToString, ), ).then((value) { if (value != null) { - EnumProviders.of(context).setStopType(value); + UserPreferencesProvider.of(context).setStopType(value); } }); }, diff --git a/lib/screens/settings/components/theme/components/dynamic_color/widget_list_tile_dynamic_color.dart b/lib/screens/settings/components/theme/components/dynamic_color/widget_list_tile_dynamic_color.dart index c4627d9..6fc5a6c 100644 --- a/lib/screens/settings/components/theme/components/dynamic_color/widget_list_tile_dynamic_color.dart +++ b/lib/screens/settings/components/theme/components/dynamic_color/widget_list_tile_dynamic_color.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/data/models/dynamic_colors_state.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/enum_providers.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/res/dimens.dart'; class DynamicColorListTile extends StatelessWidget { @@ -12,8 +12,8 @@ class DynamicColorListTile extends StatelessWidget { return SwitchListTile( secondary: const Icon(Icons.colorize), title: Text(S.of(context).dynamicColor), - value: EnumProviders.dynamicColorStateOf(context) == DynamicColorState.enabled, - onChanged: EnumProviders.of(context).enableDynamicColor, + value: UserPreferencesProvider.dynamicColorStateOf(context) == DynamicColorState.enabled, + onChanged: UserPreferencesProvider.of(context).enableDynamicColor, contentPadding: const EdgeInsets.symmetric(horizontal: Dimens.paddingM), ); } diff --git a/lib/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart b/lib/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart index c8f7074..44de22e 100644 --- a/lib/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart +++ b/lib/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/data/models/dynamic_colors_state.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/enum_providers.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/res/dimens.dart'; import 'package:lightmeter/screens/settings/components/theme/components/primary_color/components/primary_color_picker_dialog/widget_dialog_picker_primary_color.dart'; @@ -10,7 +10,7 @@ class PrimaryColorListTile extends StatelessWidget { @override Widget build(BuildContext context) { - if (EnumProviders.dynamicColorStateOf(context) == DynamicColorState.enabled) { + if (UserPreferencesProvider.dynamicColorStateOf(context) == DynamicColorState.enabled) { return Opacity( opacity: Dimens.disabledOpacity, child: IgnorePointer( @@ -30,7 +30,7 @@ class PrimaryColorListTile extends StatelessWidget { builder: (_) => const PrimaryColorDialogPicker(), ).then((value) { if (value != null) { - EnumProviders.of(context).setPrimaryColor(value); + UserPreferencesProvider.of(context).setPrimaryColor(value); } }); }, diff --git a/lib/screens/settings/components/theme/components/theme_type/widget_list_tile_theme_type.dart b/lib/screens/settings/components/theme/components/theme_type/widget_list_tile_theme_type.dart index 0960ade..8a95161 100644 --- a/lib/screens/settings/components/theme/components/theme_type/widget_list_tile_theme_type.dart +++ b/lib/screens/settings/components/theme/components/theme_type/widget_list_tile_theme_type.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/data/models/theme_type.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/enum_providers.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/screens/settings/components/shared/dialog_picker.dart/widget_dialog_picker.dart'; class ThemeTypeListTile extends StatelessWidget { @@ -12,20 +12,20 @@ class ThemeTypeListTile extends StatelessWidget { return ListTile( leading: const Icon(Icons.brightness_6), title: Text(S.of(context).theme), - trailing: Text(_typeToString(context, EnumProviders.themeTypeOf(context))), + trailing: Text(_typeToString(context, UserPreferencesProvider.themeTypeOf(context))), onTap: () { showDialog( context: context, builder: (_) => DialogPicker( icon: Icons.brightness_6, title: S.of(context).chooseTheme, - selectedValue: EnumProviders.themeTypeOf(context), + selectedValue: UserPreferencesProvider.themeTypeOf(context), values: ThemeType.values, titleAdapter: _typeToString, ), ).then((value) { if (value != null) { - EnumProviders.of(context).setThemeType(value); + UserPreferencesProvider.of(context).setThemeType(value); } }); }, diff --git a/lib/screens/settings/components/theme/widget_settings_section_theme.dart b/lib/screens/settings/components/theme/widget_settings_section_theme.dart index 5b669f4..ee03c54 100644 --- a/lib/screens/settings/components/theme/widget_settings_section_theme.dart +++ b/lib/screens/settings/components/theme/widget_settings_section_theme.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:lightmeter/data/models/dynamic_colors_state.dart'; import 'package:lightmeter/generated/l10n.dart'; -import 'package:lightmeter/providers/enum_providers.dart'; +import 'package:lightmeter/providers/user_preferences_provider.dart'; import 'package:lightmeter/screens/settings/components/shared/settings_section/widget_settings_section.dart'; import 'package:lightmeter/screens/settings/components/theme/components/dynamic_color/widget_list_tile_dynamic_color.dart'; import 'package:lightmeter/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart'; @@ -17,7 +17,7 @@ class ThemeSettingsSection extends StatelessWidget { children: [ const ThemeTypeListTile(), const PrimaryColorListTile(), - if (EnumProviders.dynamicColorStateOf(context) != DynamicColorState.unavailable) + if (UserPreferencesProvider.dynamicColorStateOf(context) != DynamicColorState.unavailable) const DynamicColorListTile(), ], );