feat: Update app layout with MainAppHeader and enhance user settings interface
This commit is contained in:
@@ -5,9 +5,11 @@ class ReadingSettings {
|
||||
this.letterSpacing = 0,
|
||||
this.fontFamily = 'serif',
|
||||
this.themePreset = 'paper',
|
||||
this.backgroundColorValue = 0xFFFFFEF8,
|
||||
this.textColorValue = 0xFF111111,
|
||||
this.horizontalPadding = 20,
|
||||
this.paragraphSpacing = 24,
|
||||
this.textAlign = 'justify',
|
||||
this.textAlign = 'left',
|
||||
});
|
||||
|
||||
final double fontSize;
|
||||
@@ -15,6 +17,8 @@ class ReadingSettings {
|
||||
final double letterSpacing;
|
||||
final String fontFamily;
|
||||
final String themePreset;
|
||||
final int backgroundColorValue;
|
||||
final int textColorValue;
|
||||
final double horizontalPadding;
|
||||
final double paragraphSpacing;
|
||||
final String textAlign;
|
||||
@@ -25,6 +29,8 @@ class ReadingSettings {
|
||||
double? letterSpacing,
|
||||
String? fontFamily,
|
||||
String? themePreset,
|
||||
int? backgroundColorValue,
|
||||
int? textColorValue,
|
||||
double? horizontalPadding,
|
||||
double? paragraphSpacing,
|
||||
String? textAlign,
|
||||
@@ -35,6 +41,8 @@ class ReadingSettings {
|
||||
letterSpacing: letterSpacing ?? this.letterSpacing,
|
||||
fontFamily: fontFamily ?? this.fontFamily,
|
||||
themePreset: themePreset ?? this.themePreset,
|
||||
backgroundColorValue: backgroundColorValue ?? this.backgroundColorValue,
|
||||
textColorValue: textColorValue ?? this.textColorValue,
|
||||
horizontalPadding: horizontalPadding ?? this.horizontalPadding,
|
||||
paragraphSpacing: paragraphSpacing ?? this.paragraphSpacing,
|
||||
textAlign: textAlign ?? this.textAlign,
|
||||
@@ -46,9 +54,12 @@ class ReadingSettings {
|
||||
letterSpacing: (json['letterSpacing'] as num?)?.toDouble() ?? 0,
|
||||
fontFamily: json['fontFamily'] as String? ?? 'serif',
|
||||
themePreset: json['themePreset'] as String? ?? 'paper',
|
||||
backgroundColorValue:
|
||||
(json['backgroundColorValue'] as num?)?.toInt() ?? 0xFFFFFEF8,
|
||||
textColorValue: (json['textColorValue'] as num?)?.toInt() ?? 0xFF111111,
|
||||
horizontalPadding: (json['horizontalPadding'] as num?)?.toDouble() ?? 20,
|
||||
paragraphSpacing: (json['paragraphSpacing'] as num?)?.toDouble() ?? 24,
|
||||
textAlign: json['textAlign'] as String? ?? 'justify',
|
||||
textAlign: json['textAlign'] as String? ?? 'left',
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
@@ -57,6 +68,8 @@ class ReadingSettings {
|
||||
'letterSpacing': letterSpacing,
|
||||
'fontFamily': fontFamily,
|
||||
'themePreset': themePreset,
|
||||
'backgroundColorValue': backgroundColorValue,
|
||||
'textColorValue': textColorValue,
|
||||
'horizontalPadding': horizontalPadding,
|
||||
'paragraphSpacing': paragraphSpacing,
|
||||
'textAlign': textAlign,
|
||||
|
||||
@@ -8,6 +8,8 @@ class LocalStore {
|
||||
static const _kLetterSpacing = 'reader_letter_spacing';
|
||||
static const _kFontFamily = 'reader_font_family';
|
||||
static const _kThemePreset = 'reader_theme_preset';
|
||||
static const _kBackgroundColor = 'reader_background_color';
|
||||
static const _kTextColor = 'reader_text_color';
|
||||
static const _kHorizontalPadding = 'reader_horizontal_padding';
|
||||
static const _kParagraphSpacing = 'reader_paragraph_spacing';
|
||||
static const _kTextAlign = 'reader_text_align';
|
||||
@@ -24,6 +26,8 @@ class LocalStore {
|
||||
await prefs.setDouble(_kLetterSpacing, settings.letterSpacing);
|
||||
await prefs.setString(_kFontFamily, settings.fontFamily);
|
||||
await prefs.setString(_kThemePreset, settings.themePreset);
|
||||
await prefs.setInt(_kBackgroundColor, settings.backgroundColorValue);
|
||||
await prefs.setInt(_kTextColor, settings.textColorValue);
|
||||
await prefs.setDouble(_kHorizontalPadding, settings.horizontalPadding);
|
||||
await prefs.setDouble(_kParagraphSpacing, settings.paragraphSpacing);
|
||||
await prefs.setString(_kTextAlign, settings.textAlign);
|
||||
@@ -32,15 +36,29 @@ class LocalStore {
|
||||
Future<ReadingSettings?> loadReadingSettings() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
if (!prefs.containsKey(_kFontSize)) return null;
|
||||
final themePreset = prefs.getString(_kThemePreset) ?? 'paper';
|
||||
final fallbackBackground = switch (themePreset) {
|
||||
'night' => 0xFF101418,
|
||||
'sepia' => 0xFFF6EAD7,
|
||||
_ => 0xFFFFFEF8,
|
||||
};
|
||||
final fallbackText = switch (themePreset) {
|
||||
'night' => 0xFFE6EAF2,
|
||||
'sepia' => 0xFF3B2F23,
|
||||
_ => 0xFF111111,
|
||||
};
|
||||
|
||||
return ReadingSettings(
|
||||
fontSize: prefs.getDouble(_kFontSize) ?? 18,
|
||||
lineHeight: prefs.getDouble(_kLineHeight) ?? 1.8,
|
||||
letterSpacing: prefs.getDouble(_kLetterSpacing) ?? 0,
|
||||
fontFamily: prefs.getString(_kFontFamily) ?? 'serif',
|
||||
themePreset: prefs.getString(_kThemePreset) ?? 'paper',
|
||||
themePreset: themePreset,
|
||||
backgroundColorValue: prefs.getInt(_kBackgroundColor) ?? fallbackBackground,
|
||||
textColorValue: prefs.getInt(_kTextColor) ?? fallbackText,
|
||||
horizontalPadding: prefs.getDouble(_kHorizontalPadding) ?? 20,
|
||||
paragraphSpacing: prefs.getDouble(_kParagraphSpacing) ?? 24,
|
||||
textAlign: prefs.getString(_kTextAlign) ?? 'justify',
|
||||
textAlign: prefs.getString(_kTextAlign) ?? 'left',
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user