adds theming class. supports light/dark mode styles

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
2026-04-29 15:06:28 -07:00
co-authored by Copilot
parent 73679a9e20
commit f0563b6d1c
2 changed files with 81 additions and 10 deletions
+68
View File
@@ -0,0 +1,68 @@
import 'package:flutter/material.dart';
class AppThemeColors {
const AppThemeColors({
required this.primarySeed,
required this.webViewBorder,
required this.webViewBackground,
required this.controlsGradientStart,
required this.controlsGradientEnd,
required this.controlsShadow,
required this.statusText,
});
final Color primarySeed;
final Color webViewBorder;
final Color webViewBackground;
final Color controlsGradientStart;
final Color controlsGradientEnd;
final Color controlsShadow;
final Color statusText;
}
class AppThemeBusinessObject {
static const AppThemeColors lightColors = AppThemeColors(
primarySeed: Color(0xFF607D8B),
webViewBorder: Color(0x42000000),
webViewBackground: Color(0xFFFFFFFF),
controlsGradientStart: Color(0xFFE1F5FE),
controlsGradientEnd: Color(0xFFB3E5FC),
controlsShadow: Color(0x22000000),
statusText: Color(0xDD000000),
);
static const AppThemeColors darkColors = AppThemeColors(
primarySeed: Color(0xFF37474F),
webViewBorder: Color(0x66FFFFFF),
webViewBackground: Color(0xFF0F1417),
controlsGradientStart: Color(0xFF1B2731),
controlsGradientEnd: Color(0xFF233744),
controlsShadow: Color(0x44000000),
statusText: Color(0xE6FFFFFF),
);
static bool isDarkMode(BuildContext context) {
return MediaQuery.platformBrightnessOf(context) == Brightness.dark;
}
static AppThemeColors colorsFor(BuildContext context) {
return isDarkMode(context) ? darkColors : lightColors;
}
static ThemeData lightTheme() {
return ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: lightColors.primarySeed),
useMaterial3: true,
);
}
static ThemeData darkTheme() {
return ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: darkColors.primarySeed,
brightness: Brightness.dark,
),
useMaterial3: true,
);
}
}