mirror of
https://gitlab.com/veilid/veilidchat.git
synced 2025-07-21 21:58:46 -04:00
settings / preferences upate
This commit is contained in:
parent
1455aabe6c
commit
d962f98786
26 changed files with 1015 additions and 125 deletions
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue