LifeFlow/android/lib/theme/app_theme.dart

152 lines
4.9 KiB
Dart

import 'package:flutter/material.dart';
class AppColors {
// Primary Colors
static const Color primary = Color(0xFF4A90E2);
static const Color primaryLight = Color(0xFF7BB3F0);
static const Color primaryDark = Color(0xFF2E5C8A);
// Category Colors
static const Color medication = Color(0xFFE74C3C);
static const Color vitamin = Color(0xFFF39C12);
static const Color appointment = Color(0xFF9B59B6);
static const Color sleep = Color(0xFF8E44AD);
static const Color food = Color(0xFFE67E22);
static const Color hydration = Color(0xFF3498DB);
static const Color exercise = Color(0xFF27AE60);
static const Color hygiene = Color(0xFF1ABC9C);
static const Color selfCare = Color(0xFF16A085);
// Gamification Colors
static const Color gold = Color(0xFFFFD700);
static const Color silver = Color(0xFFC0C0C0);
static const Color bronze = Color(0xFFCD7F32);
// Semantic Colors
static const Color success = Color(0xFF27AE60);
static const Color warning = Color(0xFFF39C12);
static const Color error = Color(0xFFE74C3C);
static const Color info = Color(0xFF3498DB);
}
class AppTheme {
static ThemeData get lightTheme {
return ThemeData(
useMaterial3: true,
brightness: Brightness.light,
colorScheme: const ColorScheme.light(
primary: AppColors.primary,
secondary: AppColors.primaryLight,
surface: Colors.white,
background: Color(0xFFF8F9FA),
onPrimary: Colors.white,
onSecondary: Colors.white,
onSurface: Color(0xFF1A1A2E),
onBackground: Color(0xFF1A1A2E),
),
scaffoldBackgroundColor: const Color(0xFFF8F9FA),
appBarTheme: const AppBarTheme(
elevation: 0,
centerTitle: false,
backgroundColor: Colors.transparent,
foregroundColor: Color(0xFF1A1A2E),
titleTextStyle: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: Color(0xFF1A1A2E),
),
),
cardTheme: CardTheme(
elevation: 2,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
),
),
bottomNavigationBarTheme: const BottomNavigationBarThemeData(
backgroundColor: Colors.white,
selectedItemColor: AppColors.primary,
unselectedItemColor: Colors.grey,
type: BottomNavigationBarType.fixed,
elevation: 8,
),
floatingActionButtonTheme: FloatingActionButtonThemeData(
backgroundColor: AppColors.primary,
foregroundColor: Colors.white,
elevation: 4,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
),
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: AppColors.primary,
foregroundColor: Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: Colors.grey[100],
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: BorderSide.none,
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: BorderSide.none,
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.primary, width: 2),
),
),
);
}
static ThemeData get darkTheme {
return ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
colorScheme: const ColorScheme.dark(
primary: AppColors.primaryLight,
secondary: AppColors.primary,
surface: Color(0xFF1E1E2E),
background: Color(0xFF0F0F1A),
onPrimary: Colors.white,
onSecondary: Colors.white,
onSurface: Colors.white,
onBackground: Colors.white,
),
scaffoldBackgroundColor: const Color(0xFF0F0F1A),
appBarTheme: const AppBarTheme(
elevation: 0,
centerTitle: false,
backgroundColor: Colors.transparent,
foregroundColor: Colors.white,
titleTextStyle: TextStyle(
fontSize: 24,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
cardTheme: CardTheme(
elevation: 2,
color: const Color(0xFF1E1E2E),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
),
),
bottomNavigationBarTheme: const BottomNavigationBarThemeData(
backgroundColor: Color(0xFF1E1E2E),
selectedItemColor: AppColors.primaryLight,
unselectedItemColor: Colors.grey,
type: BottomNavigationBarType.fixed,
elevation: 8,
),
);
}
}