mirror of
https://github.com/immich-app/immich.git
synced 2025-01-01 16:41:59 +00:00
38 lines
1.2 KiB
Dart
38 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:dynamic_color/dynamic_color.dart';
|
|
|
|
import 'package:immich_mobile/theme/theme_data.dart';
|
|
|
|
abstract final class DynamicTheme {
|
|
DynamicTheme._();
|
|
|
|
static ImmichTheme? _theme;
|
|
// Method to fetch dynamic system colors
|
|
static Future<void> fetchSystemPalette() async {
|
|
try {
|
|
final corePalette = await DynamicColorPlugin.getCorePalette();
|
|
if (corePalette != null) {
|
|
final primaryColor = corePalette.toColorScheme().primary;
|
|
debugPrint('dynamic_color: Core palette detected.');
|
|
|
|
// Some palettes do not generate surface container colors accurately,
|
|
// so we regenerate all colors using the primary color
|
|
_theme = ImmichTheme(
|
|
light: ColorScheme.fromSeed(
|
|
seedColor: primaryColor,
|
|
brightness: Brightness.light,
|
|
),
|
|
dark: ColorScheme.fromSeed(
|
|
seedColor: primaryColor,
|
|
brightness: Brightness.dark,
|
|
),
|
|
);
|
|
}
|
|
} catch (error) {
|
|
debugPrint('dynamic_color: Failed to obtain core palette: $error');
|
|
}
|
|
}
|
|
|
|
static ImmichTheme? get theme => _theme;
|
|
static bool get isAvailable => _theme != null;
|
|
}
|