123 lines
3.6 KiB
Dart
123 lines
3.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class AppTheme {
|
|
static const Color primaryColor = Color(0xFFFF6B35);
|
|
static const Color secondaryColor = Color(0xFF2C3E50);
|
|
static const Color backgroundColor = Color(0xFFF8F9FA);
|
|
static const Color cardColor = Colors.white;
|
|
static const Color textPrimary = Color(0xFF2C3E50);
|
|
static const Color textSecondary = Color(0xFF7F8C8D);
|
|
static const Color accentColor = Color(0xFFFFA726);
|
|
|
|
static ThemeData get lightTheme {
|
|
return ThemeData(
|
|
useMaterial3: true,
|
|
colorScheme: ColorScheme.fromSeed(
|
|
seedColor: primaryColor,
|
|
brightness: Brightness.light,
|
|
),
|
|
scaffoldBackgroundColor: backgroundColor,
|
|
appBarTheme: const AppBarTheme(
|
|
backgroundColor: Colors.transparent,
|
|
elevation: 0,
|
|
iconTheme: IconThemeData(color: textPrimary),
|
|
titleTextStyle: TextStyle(
|
|
color: textPrimary,
|
|
fontSize: 20,
|
|
fontWeight: FontWeight.bold,
|
|
),
|
|
),
|
|
textTheme: const TextTheme(
|
|
headlineLarge: TextStyle(
|
|
fontSize: 32,
|
|
fontWeight: FontWeight.bold,
|
|
color: Colors.white,
|
|
height: 1.1,
|
|
),
|
|
headlineMedium: TextStyle(
|
|
fontSize: 24,
|
|
fontWeight: FontWeight.bold,
|
|
color: textPrimary,
|
|
),
|
|
titleLarge: TextStyle(
|
|
fontSize: 20,
|
|
fontWeight: FontWeight.bold,
|
|
color: textPrimary,
|
|
),
|
|
titleMedium: TextStyle(
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.w600,
|
|
color: textPrimary,
|
|
),
|
|
bodyLarge: TextStyle(
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.w400,
|
|
color: textPrimary,
|
|
),
|
|
bodyMedium: TextStyle(
|
|
fontSize: 14,
|
|
fontWeight: FontWeight.w400,
|
|
color: textSecondary,
|
|
),
|
|
bodySmall: TextStyle(
|
|
fontSize: 12,
|
|
fontWeight: FontWeight.w400,
|
|
color: textSecondary,
|
|
),
|
|
),
|
|
elevatedButtonTheme: ElevatedButtonThemeData(
|
|
style: ElevatedButton.styleFrom(
|
|
backgroundColor: primaryColor,
|
|
foregroundColor: Colors.white,
|
|
elevation: 4,
|
|
shadowColor: primaryColor.withOpacity(0.3),
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(16),
|
|
),
|
|
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
|
|
),
|
|
),
|
|
cardTheme: CardThemeData(
|
|
color: cardColor,
|
|
elevation: 8,
|
|
shadowColor: Colors.black.withOpacity(0.1),
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(16),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
// Gradients personnalisés
|
|
static const LinearGradient volcanoGradient = LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
Color(0xFF1A1A1A), // Ciel sombre
|
|
Color(0xFF2D1B1B), // Rouge sombre
|
|
Color(0xFF8B0000), // Rouge foncé (lave)
|
|
Color(0xFFFF4500), // Rouge-orange (lave chaude)
|
|
Color(0xFFFF6347), // Orange (lave)
|
|
Color(0xFF4169E1), // Bleu ciel
|
|
Color(0xFF87CEEB), // Bleu clair
|
|
],
|
|
stops: [0.0, 0.2, 0.4, 0.5, 0.6, 0.8, 1.0],
|
|
);
|
|
|
|
static const LinearGradient profileGradient = LinearGradient(
|
|
colors: [Color(0xFFFFB74D), Color(0xFFFF6B35)],
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
);
|
|
|
|
static const LinearGradient cardGradient = LinearGradient(
|
|
begin: Alignment.topLeft,
|
|
end: Alignment.bottomRight,
|
|
colors: [
|
|
Color(0xFF1A1A2E),
|
|
Color(0xFF16213E),
|
|
Color(0xFF0F3460),
|
|
],
|
|
);
|
|
}
|