lightTheme property
ThemeData
get
lightTheme
Implementation
static ThemeData get lightTheme {
final baseTextTheme = GoogleFonts.plusJakartaSansTextTheme();
return ThemeData(
useMaterial3: true,
brightness: Brightness.light,
primaryColor: AppColors.primary,
scaffoldBackgroundColor: AppColors.background,
colorScheme: const ColorScheme.light(
primary: AppColors.primary,
onPrimary: AppColors.textOnPrimary,
secondary: AppColors.secondary,
onSecondary: Colors.white,
surface: AppColors.surface,
onSurface: AppColors.textPrimary,
error: AppColors.error,
onError: Colors.white,
),
textTheme: baseTextTheme.copyWith(
displayLarge: baseTextTheme.displayLarge?.copyWith(
color: AppColors.textPrimary,
fontWeight: FontWeight.bold,
letterSpacing: -0.5,
),
displayMedium: baseTextTheme.displayMedium?.copyWith(
color: AppColors.textPrimary,
fontWeight: FontWeight.bold,
letterSpacing: -0.5,
),
titleLarge: baseTextTheme.titleLarge?.copyWith(
color: AppColors.textPrimary,
fontWeight: FontWeight.w700,
),
titleMedium: baseTextTheme.titleMedium?.copyWith(
color: AppColors.textPrimary,
fontWeight: FontWeight.w600,
),
bodyLarge: baseTextTheme.bodyLarge?.copyWith(
color: AppColors.textPrimary,
fontSize: 16,
),
bodyMedium: baseTextTheme.bodyMedium?.copyWith(
color: AppColors.textSecondary,
fontSize: 14,
),
bodySmall: baseTextTheme.bodySmall?.copyWith(
color: AppColors.textMuted,
fontSize: 12,
),
),
appBarTheme: AppBarTheme(
backgroundColor: AppColors.surface,
foregroundColor: AppColors.textPrimary,
elevation: 0,
centerTitle: true,
scrolledUnderElevation: 1,
titleTextStyle: GoogleFonts.plusJakartaSans(
color: AppColors.textPrimary,
fontSize: 18,
fontWeight: FontWeight.w700,
),
iconTheme: const IconThemeData(color: AppColors.textPrimary),
),
cardTheme: CardThemeData(
color: AppColors.surface,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
side: const BorderSide(color: AppColors.cardBorder, width: 1),
),
margin: EdgeInsets.zero,
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: AppColors.primary,
foregroundColor: Colors.white,
elevation: 0,
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 14),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
textStyle: GoogleFonts.plusJakartaSans(
fontSize: 15,
fontWeight: FontWeight.w600,
),
),
),
outlinedButtonTheme: OutlinedButtonThemeData(
style: OutlinedButton.styleFrom(
foregroundColor: AppColors.primary,
side: const BorderSide(color: AppColors.cardBorder, width: 1.5),
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 14),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
textStyle: GoogleFonts.plusJakartaSans(
fontSize: 15,
fontWeight: FontWeight.w600,
),
),
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: Colors.white,
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.cardBorder),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.cardBorder),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.accent, width: 1.5),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: const BorderSide(color: AppColors.error),
),
hintStyle: GoogleFonts.plusJakartaSans(
color: AppColors.textMuted,
fontSize: 14,
),
),
bottomNavigationBarTheme: const BottomNavigationBarThemeData(
backgroundColor: Colors.white,
selectedItemColor: AppColors.accent,
unselectedItemColor: AppColors.textMuted,
type: BottomNavigationBarType.fixed,
elevation: 8,
selectedLabelStyle: TextStyle(fontWeight: FontWeight.w600, fontSize: 12),
unselectedLabelStyle: TextStyle(fontWeight: FontWeight.w500, fontSize: 12),
),
dividerTheme: const DividerThemeData(
color: AppColors.divider,
thickness: 1,
space: 1,
),
);
}