48 lines
1.4 KiB
Dart
48 lines
1.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
/// Ein Service für die Verwaltung der App-Themes.
|
|
///
|
|
/// Diese Klasse stellt Methoden bereit,
|
|
/// um das helle und dunkle Theme der App zu definieren.
|
|
class ThemeService {
|
|
/// Die Hauptfarbe der App, die als Basis für das Farbschema verwendet wird.
|
|
/// Ein helles Blau mit dem Hex-Wert #50A7FA.
|
|
static const Color color = Color(0xFF50A7FA);
|
|
|
|
/// Erstellt und gibt das helle Theme der App zurück.
|
|
static ThemeData getLightTheme() => ThemeData(
|
|
brightness: Brightness.light,
|
|
colorScheme: ColorScheme.fromSeed(seedColor: color),
|
|
);
|
|
|
|
/// Erstellt und gibt das dunkle Theme der App zurück.
|
|
static ThemeData getDarkTheme() => ThemeData(
|
|
brightness: Brightness.dark,
|
|
colorScheme: ColorScheme.fromSeed(
|
|
seedColor: color,
|
|
brightness: Brightness.dark,
|
|
),
|
|
);
|
|
|
|
/// Gibt die "Erfolgreich"-Farbe des Farbschemas zurück
|
|
static Color getSuccessColor({required final Brightness brightness}) {
|
|
final hsl = HSLColor.fromColor(color);
|
|
|
|
const double greenHue = 120;
|
|
|
|
final double saturation = (hsl.saturation * 0.7).clamp(0.0, 1.0);
|
|
final double lightness = brightness == Brightness.dark
|
|
? (hsl.lightness * 0.4).clamp(0.0, 1.0)
|
|
: (hsl.lightness * 1.2).clamp(0.0, 1.0);
|
|
|
|
final successHsl = HSLColor.fromAHSL(
|
|
hsl.alpha,
|
|
greenHue,
|
|
saturation,
|
|
lightness,
|
|
);
|
|
|
|
return successHsl.toColor();
|
|
}
|
|
}
|