highContrastLightTheme function

ThemeData highContrastLightTheme()

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,
      ),
    ],
  );
}