@@ -5,6 +5,12 @@ abstract class AppTheme {
55 static const Color primaryLight = Color (0xFF48CAE4 );
66 static const Color primaryDark = Color (0xFF0077B6 );
77
8+ static const LinearGradient backgroundGradient = LinearGradient (
9+ begin: Alignment .topCenter,
10+ end: Alignment .bottomCenter,
11+ colors: [Colors .white, Color (0xFFDDF3FB )],
12+ );
13+
814 static ThemeData get light {
915 final scheme = ColorScheme .fromSeed (
1016 seedColor: primary,
@@ -13,6 +19,7 @@ abstract class AppTheme {
1319 return ThemeData (
1420 colorScheme: scheme,
1521 useMaterial3: true ,
22+ scaffoldBackgroundColor: Colors .transparent,
1623 appBarTheme: AppBarTheme (
1724 backgroundColor: scheme.surface,
1825 surfaceTintColor: Colors .transparent,
@@ -47,9 +54,58 @@ abstract class AppTheme {
4754 const TextStyle (fontSize: 16 , fontWeight: FontWeight .w600),
4855 ),
4956 ),
57+ textButtonTheme: TextButtonThemeData (
58+ style: TextButton .styleFrom (
59+ foregroundColor: primary,
60+ shape: RoundedRectangleBorder (
61+ borderRadius: BorderRadius .circular (12 ),
62+ ),
63+ minimumSize: const Size (64 , 52 ),
64+ textStyle:
65+ const TextStyle (fontSize: 16 , fontWeight: FontWeight .w600),
66+ ),
67+ ),
68+ outlinedButtonTheme: OutlinedButtonThemeData (
69+ style: OutlinedButton .styleFrom (
70+ foregroundColor: primary,
71+ side: const BorderSide (color: primary),
72+ shape: RoundedRectangleBorder (
73+ borderRadius: BorderRadius .circular (12 ),
74+ ),
75+ minimumSize: const Size (64 , 52 ),
76+ textStyle:
77+ const TextStyle (fontSize: 16 , fontWeight: FontWeight .w600),
78+ ),
79+ ),
80+ floatingActionButtonTheme: const FloatingActionButtonThemeData (
81+ backgroundColor: primary,
82+ foregroundColor: Colors .white,
83+ ),
84+ navigationBarTheme: NavigationBarThemeData (
85+ indicatorColor: const Color (0xFFCAE9F5 ),
86+ iconTheme: WidgetStateProperty .resolveWith ((states) {
87+ if (states.contains (WidgetState .selected)) {
88+ return const IconThemeData (color: primary);
89+ }
90+ return const IconThemeData (color: Color (0xFF6B7280 ));
91+ }),
92+ labelTextStyle: WidgetStateProperty .resolveWith ((states) {
93+ if (states.contains (WidgetState .selected)) {
94+ return const TextStyle (
95+ color: primary,
96+ fontWeight: FontWeight .w600,
97+ fontSize: 12 ,
98+ );
99+ }
100+ return const TextStyle (color: Color (0xFF6B7280 ), fontSize: 12 );
101+ }),
102+ ),
50103 cardTheme: CardTheme (
51104 elevation: 0 ,
52- shape: RoundedRectangleBorder (borderRadius: BorderRadius .circular (12 )),
105+ shape: RoundedRectangleBorder (
106+ borderRadius: BorderRadius .circular (12 ),
107+ side: const BorderSide (color: Color (0xFFCAE9F5 )),
108+ ),
53109 color: Colors .white,
54110 surfaceTintColor: Colors .transparent,
55111 ),
0 commit comments