Files
terrain_monitor_app/lib/utils/theme.dart
2025-10-20 19:17:45 +02:00

99 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'constants.dart';
class AppTheme {
static ThemeData get lightTheme {
return ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.light(
primary: AppColors.primary,
secondary: AppColors.secondary,
surface: AppColors.surface,
error: AppColors.critical,
),
scaffoldBackgroundColor: AppColors.background,
appBarTheme: const AppBarTheme(
elevation: 0,
centerTitle: true,
backgroundColor: AppColors.primary,
foregroundColor: Colors.white,
systemOverlayStyle: SystemUiOverlayStyle.light,
titleTextStyle: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w600,
color: Colors.white,
),
),
cardTheme: CardThemeData(
elevation: 2,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppSizes.radiusM),
),
color: AppColors.surface,
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: AppColors.primary,
foregroundColor: Colors.white,
elevation: 2,
padding: const EdgeInsets.symmetric(
horizontal: AppSizes.paddingL,
vertical: AppSizes.paddingM,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppSizes.radiusM),
),
textStyle: AppTextStyles.button,
),
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: AppColors.surface,
contentPadding: const EdgeInsets.symmetric(
horizontal: AppSizes.paddingM,
vertical: AppSizes.paddingM,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(AppSizes.radiusM),
borderSide: const BorderSide(color: AppColors.textLight),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(AppSizes.radiusM),
borderSide: const BorderSide(color: AppColors.textLight),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(AppSizes.radiusM),
borderSide: const BorderSide(color: AppColors.primary, width: 2),
),
),
textTheme: const TextTheme(
displayLarge: AppTextStyles.h1,
displayMedium: AppTextStyles.h2,
displaySmall: AppTextStyles.h3,
bodyLarge: AppTextStyles.bodyLarge,
bodyMedium: AppTextStyles.bodyMedium,
bodySmall: AppTextStyles.bodySmall,
),
);
}
static ThemeData get darkTheme {
return ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
colorScheme: ColorScheme.dark(
primary: AppColors.primaryLight,
secondary: AppColors.secondaryLight,
surface: AppColors.surfaceDark,
error: AppColors.critical,
),
);
}
}