lightTheme property
ThemeData
get
lightTheme
Implementation
static ThemeData get lightTheme {
final ColorScheme lightColorScheme = ColorScheme.fromSeed(
seedColor: AppColors.primary,
brightness: Brightness.light,
primary: AppColors.primary,
onPrimary: Colors.white,
secondary: AppColors.brand400,
surface: Colors.white,
onSurface: AppColors.brand950,
error: Colors.redAccent,
);
return ThemeData(
useMaterial3: true,
colorScheme: lightColorScheme,
scaffoldBackgroundColor: lightColorScheme.surface,
textTheme: _textTheme(lightColorScheme.onSurface),
appBarTheme: AppBarTheme(
backgroundColor: lightColorScheme.surface,
foregroundColor: lightColorScheme.onSurface,
elevation: 0,
scrolledUnderElevation: 1,
centerTitle: false,
iconTheme: IconThemeData(
color: lightColorScheme.onSurface,
),
titleTextStyle: TextStyle(
color: lightColorScheme.onSurface,
fontSize: 20,
fontWeight: FontWeight.w600,
letterSpacing: -0.5,
),
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
elevation: 0,
backgroundColor: lightColorScheme.primary,
foregroundColor: lightColorScheme.onPrimary,
minimumSize: const Size(double.infinity, 48),
padding: const EdgeInsets.symmetric(
horizontal: 24,
vertical: 12,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
),
outlinedButtonTheme: OutlinedButtonThemeData(
style: OutlinedButton.styleFrom(
foregroundColor: lightColorScheme.primary,
side: BorderSide(
color: lightColorScheme.primary,
),
minimumSize: const Size(double.infinity, 48),
padding: const EdgeInsets.symmetric(
horizontal: 24,
vertical: 12,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
),
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
foregroundColor: lightColorScheme.primary,
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 8,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: lightColorScheme.surface,
contentPadding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 16,
),
hintStyle: TextStyle(
color: AppColors.brand300,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: BorderSide(
color: AppColors.brand200,
),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: BorderSide(
color: AppColors.brand200,
),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: BorderSide(
color: lightColorScheme.primary,
width: 2,
),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
borderSide: BorderSide(
color: lightColorScheme.error,
),
),
),
cardTheme: CardThemeData(
color: lightColorScheme.surface,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
side: BorderSide(
color: AppColors.brand100,
),
),
margin: const EdgeInsets.all(8),
),
dialogTheme: DialogThemeData(
backgroundColor: lightColorScheme.surface,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
),
navigationBarTheme: NavigationBarThemeData(
backgroundColor: lightColorScheme.surface,
indicatorColor: AppColors.brand100,
labelTextStyle: WidgetStateProperty.resolveWith((states) {
if (states.contains(WidgetState.selected)) {
return TextStyle(
color: lightColorScheme.primary,
fontWeight: FontWeight.w600,
fontSize: 12,
);
}
return TextStyle(
color: AppColors.brand400,
fontWeight: FontWeight.w500,
fontSize: 12,
);
}),
iconTheme: WidgetStateProperty.resolveWith((states) {
if (states.contains(WidgetState.selected)) {
return IconThemeData(
color: lightColorScheme.primary,
);
}
return IconThemeData(
color: AppColors.brand400,
);
}),
),
dividerTheme: DividerThemeData(
color: AppColors.brand100,
thickness: 1,
space: 1,
),
);
}