Implementation
ThemeData darkTheme() {
return ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
scaffoldBackgroundColor: kBackgroundDark,
fontFamily: GoogleFonts.notoSans().fontFamily,
primaryColor: kPrimaryColor,
colorScheme: const ColorScheme.dark(
primary: kPrimaryColor,
surface: kSurfaceDark,
onPrimary: Colors.white,
onSurface: kTextPrimaryDark,
// Fix: Distinct background for inputs in Dark Mode
surfaceContainerHighest: kSurfaceElevatedDark,
onSurfaceVariant: Color(0xFF94A3B8), // Slate-400
// Fix: Project Icons Background (Dark Blue)
primaryContainer: Color(0xFF00468C),
onPrimaryContainer: Color(0xFFD6E3FF),
),
appBarTheme: appBarTheme().copyWith(
backgroundColor: Colors.transparent,
iconTheme: const IconThemeData(color: kTextPrimaryDark),
titleTextStyle: GoogleFonts.spaceGrotesk(
color: kTextPrimaryDark, fontSize: 18, fontWeight: FontWeight.bold),
),
cardColor: kSurfaceDark,
inputDecorationTheme: inputDecorationTheme(
fillColor: kSurfaceElevatedDark, // Correct dark fill
borderColor: kBorderDark,
focusColor: kPrimaryColor,
),
textTheme: textTheme().apply(
bodyColor: kTextPrimaryDark,
displayColor: kTextPrimaryDark,
),
dividerColor: kBorderDark,
extensions: <ThemeExtension<dynamic>>[
DiagramTheme(
canvasBg: const Color(0xFF111827),
panelBg: kSurfaceDark,
gridLine: Colors.white.withValues(alpha: 0.05),
nodeBg: kSurfaceElevatedDark,
nodeBorder: kBorderDark,
textColor: kTextPrimaryDark,
accentColor: kPrimaryColor,
isDark: true,
),
],
);
}