mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2025-03-12 13:20:42 +00:00
EnumProviders
-> UserPreferencesProvider
This commit is contained in:
parent
e79226cfed
commit
9822d2541b
11 changed files with 47 additions and 45 deletions
|
@ -5,7 +5,7 @@ import 'package:lightmeter/data/models/supported_locale.dart';
|
||||||
import 'package:lightmeter/environment.dart';
|
import 'package:lightmeter/environment.dart';
|
||||||
import 'package:lightmeter/generated/l10n.dart';
|
import 'package:lightmeter/generated/l10n.dart';
|
||||||
import 'package:lightmeter/providers.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/res/theme.dart';
|
||||||
import 'package:lightmeter/screens/metering/flow_metering.dart';
|
import 'package:lightmeter/screens/metering/flow_metering.dart';
|
||||||
import 'package:lightmeter/screens/settings/flow_settings.dart';
|
import 'package:lightmeter/screens/settings/flow_settings.dart';
|
||||||
|
@ -22,8 +22,8 @@ class Application extends StatelessWidget {
|
||||||
builder: (context, ready) {
|
builder: (context, ready) {
|
||||||
if (ready) {
|
if (ready) {
|
||||||
final theme = themeFrom(
|
final theme = themeFrom(
|
||||||
EnumProviders.primaryColorOf(context),
|
UserPreferencesProvider.primaryColorOf(context),
|
||||||
EnumProviders.brightnessOf(context),
|
UserPreferencesProvider.brightnessOf(context),
|
||||||
);
|
);
|
||||||
final systemIconsBrightness =
|
final systemIconsBrightness =
|
||||||
ThemeData.estimateBrightnessForColor(theme.colorScheme.onSurface);
|
ThemeData.estimateBrightnessForColor(theme.colorScheme.onSurface);
|
||||||
|
@ -38,7 +38,7 @@ class Application extends StatelessWidget {
|
||||||
),
|
),
|
||||||
child: MaterialApp(
|
child: MaterialApp(
|
||||||
theme: theme,
|
theme: theme,
|
||||||
locale: Locale(EnumProviders.localeOf(context).intlName),
|
locale: Locale(UserPreferencesProvider.localeOf(context).intlName),
|
||||||
localizationsDelegates: const [
|
localizationsDelegates: const [
|
||||||
S.delegate,
|
S.delegate,
|
||||||
GlobalMaterialLocalizations.delegate,
|
GlobalMaterialLocalizations.delegate,
|
||||||
|
|
|
@ -6,7 +6,7 @@ import 'package:lightmeter/data/permissions_service.dart';
|
||||||
import 'package:lightmeter/data/shared_prefs_service.dart';
|
import 'package:lightmeter/data/shared_prefs_service.dart';
|
||||||
import 'package:lightmeter/data/volume_events_service.dart';
|
import 'package:lightmeter/data/volume_events_service.dart';
|
||||||
import 'package:lightmeter/environment.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/equipment_profile_provider.dart';
|
||||||
import 'package:lightmeter/providers/metering_screen_layout_provider.dart';
|
import 'package:lightmeter/providers/metering_screen_layout_provider.dart';
|
||||||
import 'package:lightmeter/providers/service_providers.dart';
|
import 'package:lightmeter/providers/service_providers.dart';
|
||||||
|
@ -36,7 +36,7 @@ class LightmeterProviders extends StatelessWidget {
|
||||||
permissionsService: const PermissionsService(),
|
permissionsService: const PermissionsService(),
|
||||||
userPreferencesService: UserPreferencesService(snapshot.data![0] as SharedPreferences),
|
userPreferencesService: UserPreferencesService(snapshot.data![0] as SharedPreferences),
|
||||||
volumeEventsService: const VolumeEventsService(LocalPlatform()),
|
volumeEventsService: const VolumeEventsService(LocalPlatform()),
|
||||||
child: EnumProviders(
|
child: UserPreferencesProvider(
|
||||||
child: MeteringScreenLayoutProvider(
|
child: MeteringScreenLayoutProvider(
|
||||||
child: EquipmentProfileProvider(
|
child: EquipmentProfileProvider(
|
||||||
child: Builder(
|
child: Builder(
|
||||||
|
|
|
@ -20,13 +20,13 @@ enum _ListenableAspect {
|
||||||
themeType,
|
themeType,
|
||||||
}
|
}
|
||||||
|
|
||||||
class EnumProviders extends StatefulWidget {
|
class UserPreferencesProvider extends StatefulWidget {
|
||||||
final Widget child;
|
final Widget child;
|
||||||
|
|
||||||
const EnumProviders({required this.child, super.key});
|
const UserPreferencesProvider({required this.child, super.key});
|
||||||
|
|
||||||
static _EnumProvidersState of(BuildContext context) {
|
static _UserPreferencesProviderState of(BuildContext context) {
|
||||||
return context.findAncestorStateOfType<_EnumProvidersState>()!;
|
return context.findAncestorStateOfType<_UserPreferencesProviderState>()!;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Brightness brightnessOf(BuildContext context) {
|
static Brightness brightnessOf(BuildContext context) {
|
||||||
|
@ -57,15 +57,17 @@ class EnumProviders extends StatefulWidget {
|
||||||
return _inheritFrom(context, _ListenableAspect.themeType).themeType;
|
return _inheritFrom(context, _ListenableAspect.themeType).themeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
static _EnumProvidersModel _inheritFrom(BuildContext context, _ListenableAspect aspect) {
|
static _UserPreferencesProviderModel _inheritFrom(
|
||||||
return InheritedModel.inheritFrom<_EnumProvidersModel>(context, aspect: aspect)!;
|
BuildContext context, _ListenableAspect aspect) {
|
||||||
|
return InheritedModel.inheritFrom<_UserPreferencesProviderModel>(context, aspect: aspect)!;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<EnumProviders> createState() => _EnumProvidersState();
|
State<UserPreferencesProvider> createState() => _UserPreferencesProviderState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _EnumProvidersState extends State<EnumProviders> with WidgetsBindingObserver {
|
class _UserPreferencesProviderState extends State<UserPreferencesProvider>
|
||||||
|
with WidgetsBindingObserver {
|
||||||
UserPreferencesService get userPreferencesService =>
|
UserPreferencesService get userPreferencesService =>
|
||||||
ServiceProviders.userPreferencesServiceOf(context);
|
ServiceProviders.userPreferencesServiceOf(context);
|
||||||
|
|
||||||
|
@ -118,7 +120,7 @@ class _EnumProvidersState extends State<EnumProviders> with WidgetsBindingObserv
|
||||||
dynamicPrimaryColor = null;
|
dynamicPrimaryColor = null;
|
||||||
state = DynamicColorState.unavailable;
|
state = DynamicColorState.unavailable;
|
||||||
}
|
}
|
||||||
return _EnumProvidersModel(
|
return _UserPreferencesProviderModel(
|
||||||
brightness: _themeBrightness,
|
brightness: _themeBrightness,
|
||||||
dynamicColorState: state,
|
dynamicColorState: state,
|
||||||
evSourceType: evSourceType,
|
evSourceType: evSourceType,
|
||||||
|
@ -196,7 +198,7 @@ class _EnumProvidersState extends State<EnumProviders> with WidgetsBindingObserv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _EnumProvidersModel extends InheritedModel<_ListenableAspect> {
|
class _UserPreferencesProviderModel extends InheritedModel<_ListenableAspect> {
|
||||||
final Brightness brightness;
|
final Brightness brightness;
|
||||||
final DynamicColorState dynamicColorState;
|
final DynamicColorState dynamicColorState;
|
||||||
final EvSourceType evSourceType;
|
final EvSourceType evSourceType;
|
||||||
|
@ -205,7 +207,7 @@ class _EnumProvidersModel extends InheritedModel<_ListenableAspect> {
|
||||||
final StopType stopType;
|
final StopType stopType;
|
||||||
final ThemeType themeType;
|
final ThemeType themeType;
|
||||||
|
|
||||||
const _EnumProvidersModel({
|
const _UserPreferencesProviderModel({
|
||||||
required this.brightness,
|
required this.brightness,
|
||||||
required this.dynamicColorState,
|
required this.dynamicColorState,
|
||||||
required this.evSourceType,
|
required this.evSourceType,
|
||||||
|
@ -217,7 +219,7 @@ class _EnumProvidersModel extends InheritedModel<_ListenableAspect> {
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool updateShouldNotify(_EnumProvidersModel oldWidget) {
|
bool updateShouldNotify(_UserPreferencesProviderModel oldWidget) {
|
||||||
return brightness != oldWidget.brightness ||
|
return brightness != oldWidget.brightness ||
|
||||||
dynamicColorState != oldWidget.dynamicColorState ||
|
dynamicColorState != oldWidget.dynamicColorState ||
|
||||||
evSourceType != oldWidget.evSourceType ||
|
evSourceType != oldWidget.evSourceType ||
|
||||||
|
@ -229,7 +231,7 @@ class _EnumProvidersModel extends InheritedModel<_ListenableAspect> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool updateShouldNotifyDependent(
|
bool updateShouldNotifyDependent(
|
||||||
_EnumProvidersModel oldWidget,
|
_UserPreferencesProviderModel oldWidget,
|
||||||
Set<_ListenableAspect> dependencies,
|
Set<_ListenableAspect> dependencies,
|
||||||
) {
|
) {
|
||||||
return (brightness != oldWidget.brightness &&
|
return (brightness != oldWidget.brightness &&
|
|
@ -1,6 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/data/models/ev_source_type.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/res/dimens.dart';
|
||||||
import 'package:lightmeter/screens/metering/components/bottom_controls/components/measure_button/widget_button_measure.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(
|
child: IconButton(
|
||||||
onPressed: onSwitchEvSourceType,
|
onPressed: onSwitchEvSourceType,
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
EnumProviders.evSourceTypeOf(context) != EvSourceType.camera
|
UserPreferencesProvider.evSourceTypeOf(context) != EvSourceType.camera
|
||||||
? Icons.camera_rear
|
? Icons.camera_rear
|
||||||
: Icons.wb_incandescent,
|
: Icons.wb_incandescent,
|
||||||
),
|
),
|
||||||
|
|
|
@ -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/exposure_pair.dart';
|
||||||
import 'package:lightmeter/data/models/film.dart';
|
import 'package:lightmeter/data/models/film.dart';
|
||||||
import 'package:lightmeter/data/models/metering_screen_layout_config.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/providers/service_providers.dart';
|
||||||
import 'package:lightmeter/screens/metering/bloc_metering.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/bottom_controls/provider_bottom_controls.dart';
|
||||||
|
@ -46,7 +46,7 @@ class MeteringScreen extends StatelessWidget {
|
||||||
ev: state is MeteringDataState ? state.ev : null,
|
ev: state is MeteringDataState ? state.ev : null,
|
||||||
isMetering: state.isMetering,
|
isMetering: state.isMetering,
|
||||||
onSwitchEvSourceType: ServiceProviders.environmentOf(context).hasLightSensor
|
onSwitchEvSourceType: ServiceProviders.environmentOf(context).hasLightSensor
|
||||||
? EnumProviders.of(context).toggleEvSourceType
|
? UserPreferencesProvider.of(context).toggleEvSourceType
|
||||||
: null,
|
: null,
|
||||||
onMeasure: () => context.read<MeteringBloc>().add(const MeasureEvent()),
|
onMeasure: () => context.read<MeteringBloc>().add(const MeasureEvent()),
|
||||||
onSettings: () {
|
onSettings: () {
|
||||||
|
@ -111,7 +111,7 @@ class _MeteringContainerBuidler extends StatelessWidget {
|
||||||
final fastest = exposurePairs.isNotEmpty ? exposurePairs.first : null;
|
final fastest = exposurePairs.isNotEmpty ? exposurePairs.first : null;
|
||||||
final slowest = exposurePairs.isNotEmpty ? exposurePairs.last : null;
|
final slowest = exposurePairs.isNotEmpty ? exposurePairs.last : null;
|
||||||
// Doubled build here when switching evSourceType. As new source bloc fires a new state on init
|
// 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(
|
? CameraContainerProvider(
|
||||||
fastest: fastest,
|
fastest: fastest,
|
||||||
slowest: slowest,
|
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
|
/// 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 int evSteps = (ev * (stopType.index + 1)).round();
|
||||||
|
|
||||||
final EquipmentProfile equipmentProfile = context.listen<EquipmentProfile>();
|
final EquipmentProfile equipmentProfile = context.listen<EquipmentProfile>();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/data/models/supported_locale.dart';
|
import 'package:lightmeter/data/models/supported_locale.dart';
|
||||||
import 'package:lightmeter/generated/l10n.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:lightmeter/screens/settings/components/shared/dialog_picker.dart/widget_dialog_picker.dart';
|
||||||
|
|
||||||
class LanguageListTile extends StatelessWidget {
|
class LanguageListTile extends StatelessWidget {
|
||||||
|
@ -12,20 +12,20 @@ class LanguageListTile extends StatelessWidget {
|
||||||
return ListTile(
|
return ListTile(
|
||||||
leading: const Icon(Icons.language),
|
leading: const Icon(Icons.language),
|
||||||
title: Text(S.of(context).language),
|
title: Text(S.of(context).language),
|
||||||
trailing: Text(EnumProviders.localeOf(context).localizedName),
|
trailing: Text(UserPreferencesProvider.localeOf(context).localizedName),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showDialog<SupportedLocale>(
|
showDialog<SupportedLocale>(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (_) => DialogPicker<SupportedLocale>(
|
builder: (_) => DialogPicker<SupportedLocale>(
|
||||||
icon: Icons.language,
|
icon: Icons.language,
|
||||||
title: S.of(context).chooseLanguage,
|
title: S.of(context).chooseLanguage,
|
||||||
selectedValue: EnumProviders.localeOf(context),
|
selectedValue: UserPreferencesProvider.localeOf(context),
|
||||||
values: SupportedLocale.values,
|
values: SupportedLocale.values,
|
||||||
titleAdapter: (context, value) => value.localizedName,
|
titleAdapter: (context, value) => value.localizedName,
|
||||||
),
|
),
|
||||||
).then((value) {
|
).then((value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
EnumProviders.of(context).setLocale(value);
|
UserPreferencesProvider.of(context).setLocale(value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/generated/l10n.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:lightmeter/screens/settings/components/shared/dialog_picker.dart/widget_dialog_picker.dart';
|
||||||
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
|
import 'package:m3_lightmeter_resources/m3_lightmeter_resources.dart';
|
||||||
|
|
||||||
|
@ -12,20 +12,20 @@ class StopTypeListTile extends StatelessWidget {
|
||||||
return ListTile(
|
return ListTile(
|
||||||
leading: const Icon(Icons.straighten),
|
leading: const Icon(Icons.straighten),
|
||||||
title: Text(S.of(context).fractionalStops),
|
title: Text(S.of(context).fractionalStops),
|
||||||
trailing: Text(_typeToString(context, EnumProviders.stopTypeOf(context))),
|
trailing: Text(_typeToString(context, UserPreferencesProvider.stopTypeOf(context))),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showDialog<StopType>(
|
showDialog<StopType>(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (_) => DialogPicker<StopType>(
|
builder: (_) => DialogPicker<StopType>(
|
||||||
icon: Icons.straighten,
|
icon: Icons.straighten,
|
||||||
title: S.of(context).showFractionalStops,
|
title: S.of(context).showFractionalStops,
|
||||||
selectedValue: EnumProviders.stopTypeOf(context),
|
selectedValue: UserPreferencesProvider.stopTypeOf(context),
|
||||||
values: StopType.values,
|
values: StopType.values,
|
||||||
titleAdapter: _typeToString,
|
titleAdapter: _typeToString,
|
||||||
),
|
),
|
||||||
).then((value) {
|
).then((value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
EnumProviders.of(context).setStopType(value);
|
UserPreferencesProvider.of(context).setStopType(value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/data/models/dynamic_colors_state.dart';
|
import 'package:lightmeter/data/models/dynamic_colors_state.dart';
|
||||||
import 'package:lightmeter/generated/l10n.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/res/dimens.dart';
|
||||||
|
|
||||||
class DynamicColorListTile extends StatelessWidget {
|
class DynamicColorListTile extends StatelessWidget {
|
||||||
|
@ -12,8 +12,8 @@ class DynamicColorListTile extends StatelessWidget {
|
||||||
return SwitchListTile(
|
return SwitchListTile(
|
||||||
secondary: const Icon(Icons.colorize),
|
secondary: const Icon(Icons.colorize),
|
||||||
title: Text(S.of(context).dynamicColor),
|
title: Text(S.of(context).dynamicColor),
|
||||||
value: EnumProviders.dynamicColorStateOf(context) == DynamicColorState.enabled,
|
value: UserPreferencesProvider.dynamicColorStateOf(context) == DynamicColorState.enabled,
|
||||||
onChanged: EnumProviders.of(context).enableDynamicColor,
|
onChanged: UserPreferencesProvider.of(context).enableDynamicColor,
|
||||||
contentPadding: const EdgeInsets.symmetric(horizontal: Dimens.paddingM),
|
contentPadding: const EdgeInsets.symmetric(horizontal: Dimens.paddingM),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/data/models/dynamic_colors_state.dart';
|
import 'package:lightmeter/data/models/dynamic_colors_state.dart';
|
||||||
import 'package:lightmeter/generated/l10n.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/res/dimens.dart';
|
||||||
import 'package:lightmeter/screens/settings/components/theme/components/primary_color/components/primary_color_picker_dialog/widget_dialog_picker_primary_color.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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (EnumProviders.dynamicColorStateOf(context) == DynamicColorState.enabled) {
|
if (UserPreferencesProvider.dynamicColorStateOf(context) == DynamicColorState.enabled) {
|
||||||
return Opacity(
|
return Opacity(
|
||||||
opacity: Dimens.disabledOpacity,
|
opacity: Dimens.disabledOpacity,
|
||||||
child: IgnorePointer(
|
child: IgnorePointer(
|
||||||
|
@ -30,7 +30,7 @@ class PrimaryColorListTile extends StatelessWidget {
|
||||||
builder: (_) => const PrimaryColorDialogPicker(),
|
builder: (_) => const PrimaryColorDialogPicker(),
|
||||||
).then((value) {
|
).then((value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
EnumProviders.of(context).setPrimaryColor(value);
|
UserPreferencesProvider.of(context).setPrimaryColor(value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/data/models/theme_type.dart';
|
import 'package:lightmeter/data/models/theme_type.dart';
|
||||||
import 'package:lightmeter/generated/l10n.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:lightmeter/screens/settings/components/shared/dialog_picker.dart/widget_dialog_picker.dart';
|
||||||
|
|
||||||
class ThemeTypeListTile extends StatelessWidget {
|
class ThemeTypeListTile extends StatelessWidget {
|
||||||
|
@ -12,20 +12,20 @@ class ThemeTypeListTile extends StatelessWidget {
|
||||||
return ListTile(
|
return ListTile(
|
||||||
leading: const Icon(Icons.brightness_6),
|
leading: const Icon(Icons.brightness_6),
|
||||||
title: Text(S.of(context).theme),
|
title: Text(S.of(context).theme),
|
||||||
trailing: Text(_typeToString(context, EnumProviders.themeTypeOf(context))),
|
trailing: Text(_typeToString(context, UserPreferencesProvider.themeTypeOf(context))),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showDialog<ThemeType>(
|
showDialog<ThemeType>(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (_) => DialogPicker<ThemeType>(
|
builder: (_) => DialogPicker<ThemeType>(
|
||||||
icon: Icons.brightness_6,
|
icon: Icons.brightness_6,
|
||||||
title: S.of(context).chooseTheme,
|
title: S.of(context).chooseTheme,
|
||||||
selectedValue: EnumProviders.themeTypeOf(context),
|
selectedValue: UserPreferencesProvider.themeTypeOf(context),
|
||||||
values: ThemeType.values,
|
values: ThemeType.values,
|
||||||
titleAdapter: _typeToString,
|
titleAdapter: _typeToString,
|
||||||
),
|
),
|
||||||
).then((value) {
|
).then((value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
EnumProviders.of(context).setThemeType(value);
|
UserPreferencesProvider.of(context).setThemeType(value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/data/models/dynamic_colors_state.dart';
|
import 'package:lightmeter/data/models/dynamic_colors_state.dart';
|
||||||
import 'package:lightmeter/generated/l10n.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/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/dynamic_color/widget_list_tile_dynamic_color.dart';
|
||||||
import 'package:lightmeter/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_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: [
|
children: [
|
||||||
const ThemeTypeListTile(),
|
const ThemeTypeListTile(),
|
||||||
const PrimaryColorListTile(),
|
const PrimaryColorListTile(),
|
||||||
if (EnumProviders.dynamicColorStateOf(context) != DynamicColorState.unavailable)
|
if (UserPreferencesProvider.dynamicColorStateOf(context) != DynamicColorState.unavailable)
|
||||||
const DynamicColorListTile(),
|
const DynamicColorListTile(),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue