mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-05-15 21:28:20 +02:00
2143de3aa7
Strip doc comments, section dividers, HTML comments, and Flutter template boilerplate that add no informational value. No logic or behavior changes.
78 lines
2.2 KiB
Dart
78 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
const String kThemeModeKey = 'theme_mode';
|
|
const String kUseDynamicColorKey = 'use_dynamic_color';
|
|
const String kSeedColorKey = 'seed_color';
|
|
const String kUseAmoledKey = 'use_amoled';
|
|
|
|
/// Default Spotify green color for fallback
|
|
const int kDefaultSeedColor = 0xFF1DB954;
|
|
|
|
class ThemeSettings {
|
|
final ThemeMode themeMode;
|
|
final bool useDynamicColor;
|
|
final int seedColorValue;
|
|
final bool useAmoled;
|
|
|
|
const ThemeSettings({
|
|
this.themeMode = ThemeMode.system,
|
|
this.useDynamicColor = true,
|
|
this.seedColorValue = kDefaultSeedColor,
|
|
this.useAmoled = false,
|
|
});
|
|
|
|
Color get seedColor => Color(seedColorValue);
|
|
|
|
ThemeSettings copyWith({
|
|
ThemeMode? themeMode,
|
|
bool? useDynamicColor,
|
|
int? seedColorValue,
|
|
bool? useAmoled,
|
|
}) {
|
|
return ThemeSettings(
|
|
themeMode: themeMode ?? this.themeMode,
|
|
useDynamicColor: useDynamicColor ?? this.useDynamicColor,
|
|
seedColorValue: seedColorValue ?? this.seedColorValue,
|
|
useAmoled: useAmoled ?? this.useAmoled,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() => {
|
|
kThemeModeKey: themeMode.name,
|
|
kUseDynamicColorKey: useDynamicColor,
|
|
kSeedColorKey: seedColorValue,
|
|
kUseAmoledKey: useAmoled,
|
|
};
|
|
|
|
factory ThemeSettings.fromJson(Map<String, dynamic> json) {
|
|
return ThemeSettings(
|
|
themeMode: _themeModeFromString(json[kThemeModeKey] as String?),
|
|
useDynamicColor: json[kUseDynamicColorKey] as bool? ?? true,
|
|
seedColorValue: json[kSeedColorKey] as int? ?? kDefaultSeedColor,
|
|
useAmoled: json[kUseAmoledKey] as bool? ?? false,
|
|
);
|
|
}
|
|
|
|
@override
|
|
bool operator ==(Object other) {
|
|
if (identical(this, other)) return true;
|
|
return other is ThemeSettings &&
|
|
other.themeMode == themeMode &&
|
|
other.useDynamicColor == useDynamicColor &&
|
|
other.seedColorValue == seedColorValue &&
|
|
other.useAmoled == useAmoled;
|
|
}
|
|
|
|
@override
|
|
int get hashCode =>
|
|
themeMode.hashCode ^ useDynamicColor.hashCode ^ seedColorValue.hashCode ^ useAmoled.hashCode;
|
|
}
|
|
|
|
ThemeMode _themeModeFromString(String? value) {
|
|
if (value == null) return ThemeMode.system;
|
|
return ThemeMode.values.firstWhere(
|
|
(e) => e.name == value,
|
|
orElse: () => ThemeMode.system,
|
|
);
|
|
}
|