import 'package:flutter/material.dart'; import 'package:afterwork/core/constants/colors.dart'; /// Classe qui définit les thèmes de l'application AfterWork. /// Elle gère à la fois le thème clair et le thème sombre, avec des personnalisations /// pour les couleurs, les boutons, les textes et d'autres éléments visuels. class AppTheme { /// Thème clair static final ThemeData lightTheme = ThemeData( brightness: Brightness.light, primaryColor: AppColors.lightPrimary, scaffoldBackgroundColor: AppColors.lightBackground, appBarTheme: const AppBarTheme( color: AppColors.lightPrimary, iconTheme: IconThemeData(color: AppColors.lightOnPrimary), ), iconTheme: const IconThemeData(color: AppColors.lightTextPrimary), colorScheme: const ColorScheme.light( primary: AppColors.lightPrimary, secondary: AppColors.lightSecondary, onPrimary: AppColors.lightOnPrimary, onSecondary: AppColors.lightOnSecondary, surface: AppColors.lightSurface, ), buttonTheme: const ButtonThemeData( buttonColor: AppColors.lightPrimary, textTheme: ButtonTextTheme.primary, ), textTheme: const TextTheme( bodyLarge: TextStyle(color: AppColors.lightTextPrimary), bodyMedium: TextStyle(color: AppColors.lightTextSecondary), titleLarge: TextStyle(color: AppColors.lightTextPrimary), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: AppColors.lightSurface, labelStyle: const TextStyle(color: AppColors.lightTextPrimary), hintStyle: const TextStyle(color: AppColors.lightTextSecondary), focusedBorder: OutlineInputBorder( borderSide: const BorderSide(color: AppColors.lightPrimary), borderRadius: BorderRadius.circular(12.0), ), enabledBorder: OutlineInputBorder( borderSide: const BorderSide(color: Colors.grey), borderRadius: BorderRadius.circular(12.0), ), ), floatingActionButtonTheme: const FloatingActionButtonThemeData( backgroundColor: AppColors.lightPrimary, foregroundColor: AppColors.lightOnPrimary, ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: AppColors.lightPrimary, foregroundColor: AppColors.lightOnPrimary, padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), textStyle: const TextStyle(fontSize: 18), ), ), ); /// Thème sombre static final ThemeData darkTheme = ThemeData( brightness: Brightness.dark, primaryColor: AppColors.darkPrimary, scaffoldBackgroundColor: AppColors.darkBackground, appBarTheme: const AppBarTheme( color: AppColors.darkPrimary, iconTheme: IconThemeData(color: AppColors.darkOnPrimary), ), iconTheme: const IconThemeData(color: AppColors.darkOnPrimary), colorScheme: const ColorScheme.dark( primary: AppColors.darkPrimary, secondary: AppColors.darkSecondary, onPrimary: AppColors.darkOnPrimary, onSecondary: AppColors.darkOnSecondary, surface: AppColors.darkSurface, ), buttonTheme: const ButtonThemeData( buttonColor: AppColors.darkSecondary, textTheme: ButtonTextTheme.primary, ), textTheme: const TextTheme( bodyLarge: TextStyle(color: AppColors.darkTextPrimary), bodyMedium: TextStyle(color: AppColors.darkTextSecondary), titleLarge: TextStyle(color: AppColors.darkTextPrimary), ), inputDecorationTheme: InputDecorationTheme( filled: true, fillColor: AppColors.darkSurface, labelStyle: const TextStyle(color: AppColors.darkTextPrimary), hintStyle: const TextStyle(color: AppColors.darkTextSecondary), focusedBorder: OutlineInputBorder( borderSide: const BorderSide(color: AppColors.darkSecondary), borderRadius: BorderRadius.circular(12.0), ), enabledBorder: OutlineInputBorder( borderSide: const BorderSide(color: AppColors.darkTextSecondary), borderRadius: BorderRadius.circular(12.0), ), ), floatingActionButtonTheme: const FloatingActionButtonThemeData( backgroundColor: AppColors.darkSecondary, foregroundColor: AppColors.darkOnPrimary, ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: AppColors.darkSecondary, foregroundColor: AppColors.darkOnPrimary, padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), textStyle: const TextStyle(fontSize: 18), ), ), ); }