init
This commit is contained in:
175
lib/themes/app_theme.dart
Normal file
175
lib/themes/app_theme.dart
Normal file
@@ -0,0 +1,175 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class AppTheme {
|
||||
static ThemeData get darkTheme {
|
||||
return ThemeData(
|
||||
useMaterial3: true,
|
||||
brightness: Brightness.dark,
|
||||
scaffoldBackgroundColor: Colors.black,
|
||||
canvasColor: Colors.black,
|
||||
cardColor: const Color(0xFF121212),
|
||||
primaryColor: Colors.blue,
|
||||
colorScheme: ColorScheme.dark(
|
||||
primary: Colors.blue,
|
||||
secondary: Colors.blueAccent,
|
||||
surface: const Color(0xFF121212),
|
||||
background: Colors.black,
|
||||
onSurface: Colors.white,
|
||||
onBackground: Colors.white,
|
||||
),
|
||||
appBarTheme: const AppBarTheme(
|
||||
backgroundColor: Colors.black,
|
||||
elevation: 0,
|
||||
titleTextStyle: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
iconTheme: IconThemeData(color: Colors.white),
|
||||
),
|
||||
bottomNavigationBarTheme: const BottomNavigationBarThemeData(
|
||||
backgroundColor: Color(0xFF121212),
|
||||
selectedItemColor: Colors.blue,
|
||||
unselectedItemColor: Colors.grey,
|
||||
type: BottomNavigationBarType.fixed,
|
||||
),
|
||||
cardTheme: CardTheme(
|
||||
color: const Color(0xFF1E1E1E),
|
||||
elevation: 2,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
),
|
||||
textTheme: const TextTheme(
|
||||
headlineLarge: TextStyle(
|
||||
color: Colors.white, fontSize: 32, fontWeight: FontWeight.bold),
|
||||
headlineMedium: TextStyle(
|
||||
color: Colors.white, fontSize: 28, fontWeight: FontWeight.bold),
|
||||
headlineSmall: TextStyle(
|
||||
color: Colors.white, fontSize: 24, fontWeight: FontWeight.bold),
|
||||
titleLarge: TextStyle(
|
||||
color: Colors.white, fontSize: 20, fontWeight: FontWeight.w600),
|
||||
titleMedium: TextStyle(
|
||||
color: Colors.white, fontSize: 18, fontWeight: FontWeight.w500),
|
||||
titleSmall: TextStyle(
|
||||
color: Colors.white, fontSize: 16, fontWeight: FontWeight.w500),
|
||||
bodyLarge: TextStyle(color: Colors.white, fontSize: 16),
|
||||
bodyMedium: TextStyle(color: Colors.white70, fontSize: 14),
|
||||
bodySmall: TextStyle(color: Colors.white60, fontSize: 12),
|
||||
labelLarge: TextStyle(
|
||||
color: Colors.white, fontSize: 14, fontWeight: FontWeight.w500),
|
||||
labelMedium: TextStyle(color: Colors.white70, fontSize: 12),
|
||||
labelSmall: TextStyle(color: Colors.white60, fontSize: 10),
|
||||
),
|
||||
iconTheme: const IconThemeData(color: Colors.white),
|
||||
dividerTheme: const DividerThemeData(
|
||||
color: Color(0xFF2A2A2A),
|
||||
thickness: 1,
|
||||
),
|
||||
switchTheme: SwitchThemeData(
|
||||
thumbColor: MaterialStateProperty.resolveWith<Color?>(
|
||||
(Set<MaterialState> states) {
|
||||
if (states.contains(MaterialState.selected)) {
|
||||
return Colors.blue;
|
||||
}
|
||||
return Colors.grey;
|
||||
}),
|
||||
trackColor: MaterialStateProperty.resolveWith<Color?>(
|
||||
(Set<MaterialState> states) {
|
||||
if (states.contains(MaterialState.selected)) {
|
||||
return Colors.blue.withOpacity(0.5);
|
||||
}
|
||||
return Colors.grey.withOpacity(0.5);
|
||||
}),
|
||||
),
|
||||
dialogTheme: DialogTheme(
|
||||
backgroundColor: const Color(0xFF1E1E1E),
|
||||
elevation: 8,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
titleTextStyle: const TextStyle(
|
||||
color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold),
|
||||
contentTextStyle: const TextStyle(color: Colors.white70, fontSize: 16),
|
||||
),
|
||||
floatingActionButtonTheme: const FloatingActionButtonThemeData(
|
||||
backgroundColor: Colors.blue,
|
||||
foregroundColor: Colors.white,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
static const Color primaryBlack = Colors.black;
|
||||
static const Color secondaryBlack = Color(0xFF121212);
|
||||
static const Color tertiaryBlack = Color(0xFF1E1E1E);
|
||||
static const Color dividerColor = Color(0xFF2A2A2A);
|
||||
static const Color textPrimary = Colors.white;
|
||||
static const Color textSecondary = Color(0xFFB3B3B3);
|
||||
static const Color textTertiary = Color(0xFF808080);
|
||||
static const Color accentBlue = Colors.blue;
|
||||
static const Color accentBlueLight = Color(0xFF64B5F6);
|
||||
static const Color errorRed = Color(0xFFCF6679);
|
||||
static const Color successGreen = Color(0xFF4CAF50);
|
||||
static const Color warningOrange = Color(0xFFFF9800);
|
||||
|
||||
static const TextStyle titleLarge = TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: textPrimary,
|
||||
);
|
||||
|
||||
static const TextStyle titleMedium = TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: textPrimary,
|
||||
);
|
||||
|
||||
static const TextStyle bodyLarge = TextStyle(
|
||||
fontSize: 16,
|
||||
color: textPrimary,
|
||||
);
|
||||
|
||||
static const TextStyle bodyMedium = TextStyle(
|
||||
fontSize: 14,
|
||||
color: textSecondary,
|
||||
);
|
||||
|
||||
static const TextStyle caption = TextStyle(
|
||||
fontSize: 12,
|
||||
color: textTertiary,
|
||||
);
|
||||
|
||||
static const TextStyle labelLarge = TextStyle(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: textPrimary,
|
||||
);
|
||||
|
||||
static const double spacingXS = 4.0;
|
||||
static const double spacingS = 8.0;
|
||||
static const double spacingM = 16.0;
|
||||
static const double spacingL = 24.0;
|
||||
static const double spacingXL = 32.0;
|
||||
static const double spacingXXL = 48.0;
|
||||
|
||||
static const double radiusS = 4.0;
|
||||
static const double radiusM = 8.0;
|
||||
static const double radiusL = 12.0;
|
||||
static const double radiusXL = 16.0;
|
||||
|
||||
static List<BoxShadow> get cardShadow => [
|
||||
BoxShadow(
|
||||
color: Colors.black.withOpacity(0.3),
|
||||
blurRadius: 8,
|
||||
offset: const Offset(0, 2),
|
||||
),
|
||||
];
|
||||
|
||||
static List<BoxShadow> get buttonShadow => [
|
||||
BoxShadow(
|
||||
color: Colors.black.withOpacity(0.2),
|
||||
blurRadius: 4,
|
||||
offset: const Offset(0, 2),
|
||||
),
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user