settings / preferences upate

This commit is contained in:
Christien Rioux 2024-07-26 16:51:03 -04:00
parent 1455aabe6c
commit d962f98786
26 changed files with 1015 additions and 125 deletions

View file

@ -49,19 +49,16 @@ enum ColorPreference {
@freezed
class ThemePreferences with _$ThemePreferences {
const factory ThemePreferences({
required BrightnessPreference brightnessPreference,
required ColorPreference colorPreference,
required double displayScale,
@Default(BrightnessPreference.system)
BrightnessPreference brightnessPreference,
@Default(ColorPreference.vapor) ColorPreference colorPreference,
@Default(1) double displayScale,
}) = _ThemePreferences;
factory ThemePreferences.fromJson(dynamic json) =>
_$ThemePreferencesFromJson(json as Map<String, dynamic>);
static const ThemePreferences defaults = ThemePreferences(
colorPreference: ColorPreference.vapor,
brightnessPreference: BrightnessPreference.system,
displayScale: 1,
);
static const ThemePreferences defaults = ThemePreferences();
}
extension ThemePreferencesExt on ThemePreferences {

View file

@ -127,18 +127,21 @@ class __$$ThemePreferencesImplCopyWithImpl<$Res>
@JsonSerializable()
class _$ThemePreferencesImpl implements _ThemePreferences {
const _$ThemePreferencesImpl(
{required this.brightnessPreference,
required this.colorPreference,
required this.displayScale});
{this.brightnessPreference = BrightnessPreference.system,
this.colorPreference = ColorPreference.vapor,
this.displayScale = 1});
factory _$ThemePreferencesImpl.fromJson(Map<String, dynamic> json) =>
_$$ThemePreferencesImplFromJson(json);
@override
@JsonKey()
final BrightnessPreference brightnessPreference;
@override
@JsonKey()
final ColorPreference colorPreference;
@override
@JsonKey()
final double displayScale;
@override
@ -181,9 +184,9 @@ class _$ThemePreferencesImpl implements _ThemePreferences {
abstract class _ThemePreferences implements ThemePreferences {
const factory _ThemePreferences(
{required final BrightnessPreference brightnessPreference,
required final ColorPreference colorPreference,
required final double displayScale}) = _$ThemePreferencesImpl;
{final BrightnessPreference brightnessPreference,
final ColorPreference colorPreference,
final double displayScale}) = _$ThemePreferencesImpl;
factory _ThemePreferences.fromJson(Map<String, dynamic> json) =
_$ThemePreferencesImpl.fromJson;

View file

@ -9,10 +9,13 @@ part of 'theme_preference.dart';
_$ThemePreferencesImpl _$$ThemePreferencesImplFromJson(
Map<String, dynamic> json) =>
_$ThemePreferencesImpl(
brightnessPreference:
BrightnessPreference.fromJson(json['brightness_preference']),
colorPreference: ColorPreference.fromJson(json['color_preference']),
displayScale: (json['display_scale'] as num).toDouble(),
brightnessPreference: json['brightness_preference'] == null
? BrightnessPreference.system
: BrightnessPreference.fromJson(json['brightness_preference']),
colorPreference: json['color_preference'] == null
? ColorPreference.vapor
: ColorPreference.fromJson(json['color_preference']),
displayScale: (json['display_scale'] as num?)?.toDouble() ?? 1,
);
Map<String, dynamic> _$$ThemePreferencesImplToJson(

View file

@ -24,7 +24,7 @@ List<DropdownMenuItem<dynamic>> _getBrightnessDropdownItems() {
Widget buildSettingsPageBrightnessPreferences(
{required BuildContext context, required void Function() onChanged}) {
final preferencesRepository = PreferencesRepository.instance;
final themePreferences = preferencesRepository.value.themePreferences;
final themePreferences = preferencesRepository.value.themePreference;
return ThemeSwitcher.withTheme(
builder: (_, switcher, theme) => FormBuilderDropdown(
name: formFieldBrightness,
@ -36,7 +36,7 @@ Widget buildSettingsPageBrightnessPreferences(
final newThemePrefs = themePreferences.copyWith(
brightnessPreference: value as BrightnessPreference);
final newPrefs = preferencesRepository.value
.copyWith(themePreferences: newThemePrefs);
.copyWith(themePreference: newThemePrefs);
await preferencesRepository.set(newPrefs);
switcher.changeTheme(theme: newThemePrefs.themeData());

View file

@ -34,7 +34,7 @@ List<DropdownMenuItem<dynamic>> _getThemeDropdownItems() {
Widget buildSettingsPageColorPreferences(
{required BuildContext context, required void Function() onChanged}) {
final preferencesRepository = PreferencesRepository.instance;
final themePreferences = preferencesRepository.value.themePreferences;
final themePreferences = preferencesRepository.value.themePreference;
return ThemeSwitcher.withTheme(
builder: (_, switcher, theme) => FormBuilderDropdown(
name: formFieldTheme,
@ -46,7 +46,7 @@ Widget buildSettingsPageColorPreferences(
final newThemePrefs = themePreferences.copyWith(
colorPreference: value as ColorPreference);
final newPrefs = preferencesRepository.value
.copyWith(themePreferences: newThemePrefs);
.copyWith(themePreference: newThemePrefs);
await preferencesRepository.set(newPrefs);
switcher.changeTheme(theme: newThemePrefs.themeData());

View file

@ -19,6 +19,14 @@ extension BorderExt on Widget {
child: this);
}
extension SizeToFixExt on Widget {
FittedBox fit({BoxFit? fit, Key? key}) => FittedBox(
key: key,
fit: fit ?? BoxFit.scaleDown,
child: this,
);
}
extension ModalProgressExt on Widget {
BlurryModalProgressHUD withModalHUD(BuildContext context, bool isLoading) {
final theme = Theme.of(context);