mirror of
https://github.com/immich-app/immich.git
synced 2025-01-09 13:26:47 +01:00
39 lines
1.2 KiB
Dart
39 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;
|
||
|
}
|