Implementation
ThemeData highContrastLightTheme() {
return ThemeData(
useMaterial3: true,
brightness: Brightness.light,
scaffoldBackgroundColor: kBackgroundLightHC,
fontFamily: GoogleFonts.notoSans().fontFamily,
primaryColor: kPrimaryColor,
colorScheme: const ColorScheme.light(
primary: kPrimaryColor,
surface: kSurfaceLightHC,
onPrimary: Colors.white,
onSurface: kTextPrimaryLightHC,
surfaceContainerHighest: Color(0xFFE0E0E0),
onSurfaceVariant: Colors.black,
primaryContainer: Color(0xFF0000FF), // Pure Blue for Max Contrast
onPrimaryContainer: Colors.white,
),
appBarTheme: AppBarTheme(
backgroundColor: kSurfaceLightHC,
elevation: 0,
centerTitle: true,
iconTheme: const IconThemeData(color: kTextPrimaryLightHC, size: 28),
titleTextStyle: GoogleFonts.spaceGrotesk(
color: kTextPrimaryLightHC,
fontSize: 22,
fontWeight: FontWeight.bold,
),
toolbarHeight: 64,
),
switchTheme: SwitchThemeData(
thumbColor: WidgetStateProperty.all(kPrimaryColor),
trackColor: WidgetStateProperty.all(kBorderLightHC),
materialTapTargetSize: MaterialTapTargetSize.padded,
),
inputDecorationTheme: const InputDecorationTheme(
filled: true,
fillColor: kSurfaceLightHC,
contentPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 20),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: kBorderLightHC, width: 5),
borderRadius: BorderRadius.all(Radius.circular(12)),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: kPrimaryColor, width: 6),
borderRadius: BorderRadius.all(Radius.circular(12)),
),
border: OutlineInputBorder(
borderSide: BorderSide(color: kBorderLightHC, width: 3),
borderRadius: BorderRadius.all(Radius.circular(12)),
),
),
textTheme: textTheme().apply(
bodyColor: kTextPrimaryLightHC,
displayColor: kTextPrimaryLightHC,
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: kPrimaryColor,
foregroundColor: Colors.white,
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
minimumSize: const Size(88, 56),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
side: const BorderSide(color: kBorderLightHC, width: 4),
),
),
),
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
foregroundColor: kPrimaryColor,
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14),
minimumSize: const Size(64, 52),
),
),
outlinedButtonTheme: OutlinedButtonThemeData(
style: OutlinedButton.styleFrom(
foregroundColor: kTextPrimaryLightHC,
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
minimumSize: const Size(88, 56),
side: const BorderSide(color: kBorderLightHC, width: 5),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
),
),
floatingActionButtonTheme: const FloatingActionButtonThemeData(
backgroundColor: kPrimaryColor,
foregroundColor: Colors.white,
iconSize: 32,
sizeConstraints: BoxConstraints.tightFor(width: 68, height: 68),
),
iconTheme: const IconThemeData(color: kTextPrimaryLightHC, size: 28),
dividerColor: kBorderLightHC,
dividerTheme:
const DividerThemeData(color: kBorderLightHC, thickness: 2, space: 32),
cardTheme: CardThemeData(
color: kSurfaceLightHC,
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
side: const BorderSide(color: kBorderLightHC, width: 5),
),
margin: const EdgeInsets.all(12),
),
listTileTheme: const ListTileThemeData(
contentPadding: EdgeInsets.symmetric(horizontal: 20, vertical: 16),
minLeadingWidth: 64,
minVerticalPadding: 16,
iconColor: kPrimaryColor,
textColor: kTextPrimaryLightHC,
),
extensions: <ThemeExtension<dynamic>>[
DiagramTheme(
canvasBg: const Color(0xFFFAFAFA),
panelBg: kSurfaceLightHC,
gridLine: Colors.black.withValues(alpha: 0.20),
nodeBg: kSurfaceLightHC,
nodeBorder: kBorderLightHC,
textColor: kTextPrimaryLightHC,
accentColor: kPrimaryColor,
isDark: false,
),
],
);
}