feat: add payment method
This commit is contained in:
+319
@@ -727,3 +727,322 @@ final ThemeData lightTheme = ThemeData(
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Ugly theme — intentionally repulsive
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
const _uglyFg = Color(0xFFFFF700);
|
||||
const _uglyBg = Color(0xFF00FFFF);
|
||||
const _uglySurface = Color(0xFFFF00FF);
|
||||
const _uglyPrimary = Color(0xFFCCFF00);
|
||||
const _uglySecondary = Color(0xFFFF1493);
|
||||
const _uglyError = Color(0xFFFF6600);
|
||||
|
||||
final ThemeData uglyTheme = ThemeData(
|
||||
useMaterial3: true,
|
||||
brightness: Brightness.light,
|
||||
|
||||
colorScheme: const ColorScheme.light(
|
||||
primary: _uglyPrimary,
|
||||
secondary: _uglySecondary,
|
||||
surface: _uglySurface,
|
||||
error: _uglyError,
|
||||
onPrimary: Color(0xFF0000FF),
|
||||
onSecondary: _uglyFg,
|
||||
onSurface: _uglyFg,
|
||||
onError: Color(0xFF000000),
|
||||
onSurfaceVariant: Color(0xFFFF0000),
|
||||
),
|
||||
|
||||
scaffoldBackgroundColor: _uglyBg,
|
||||
canvasColor: _uglyBg,
|
||||
|
||||
appBarTheme: const AppBarTheme(
|
||||
elevation: 8,
|
||||
shadowColor: Color(0xFFFF0000),
|
||||
centerTitle: true,
|
||||
backgroundColor: _uglySecondary,
|
||||
foregroundColor: _uglyFg,
|
||||
surfaceTintColor: _uglyError,
|
||||
titleTextStyle: TextStyle(
|
||||
fontSize: 30,
|
||||
fontWeight: FontWeight.w900,
|
||||
letterSpacing: 4,
|
||||
color: _uglyFg,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
iconTheme: IconThemeData(color: _uglyBg, size: 30),
|
||||
actionsIconTheme: IconThemeData(color: _uglyFg, size: 30),
|
||||
toolbarHeight: 80,
|
||||
),
|
||||
|
||||
iconButtonTheme: IconButtonThemeData(
|
||||
style: IconButton.styleFrom(
|
||||
backgroundColor: _uglyError,
|
||||
foregroundColor: Colors.black,
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(0),
|
||||
topRight: Radius.circular(20),
|
||||
bottomLeft: Radius.circular(20),
|
||||
bottomRight: Radius.circular(0),
|
||||
),
|
||||
),
|
||||
side: const BorderSide(color: _uglyPrimary, width: 3),
|
||||
padding: const EdgeInsets.all(16),
|
||||
),
|
||||
),
|
||||
|
||||
cardTheme: CardThemeData(
|
||||
color: _uglySurface,
|
||||
elevation: 8,
|
||||
shadowColor: _uglyPrimary,
|
||||
margin: const EdgeInsets.symmetric(horizontal: 0, vertical: 18),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: const BorderRadius.only(
|
||||
topLeft: Radius.circular(4),
|
||||
topRight: Radius.circular(30),
|
||||
bottomLeft: Radius.circular(30),
|
||||
bottomRight: Radius.circular(4),
|
||||
),
|
||||
side: const BorderSide(color: _uglySecondary, width: 4),
|
||||
),
|
||||
),
|
||||
|
||||
filledButtonTheme: FilledButtonThemeData(
|
||||
style: FilledButton.styleFrom(
|
||||
elevation: 4,
|
||||
backgroundColor: _uglyPrimary,
|
||||
foregroundColor: const Color(0xFF0000FF),
|
||||
shadowColor: _uglyError,
|
||||
disabledBackgroundColor: _uglyBg,
|
||||
disabledForegroundColor: _uglyError,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 22),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(2),
|
||||
side: const BorderSide(color: _uglySecondary, width: 3),
|
||||
),
|
||||
textStyle: const TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w900,
|
||||
letterSpacing: 3,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
elevatedButtonTheme: ElevatedButtonThemeData(
|
||||
style: ElevatedButton.styleFrom(
|
||||
elevation: 6,
|
||||
backgroundColor: _uglyError,
|
||||
foregroundColor: _uglyBg,
|
||||
shadowColor: _uglyPrimary,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 28, vertical: 20),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(24),
|
||||
side: const BorderSide(color: _uglyFg, width: 4),
|
||||
),
|
||||
textStyle: const TextStyle(
|
||||
fontSize: 17,
|
||||
fontWeight: FontWeight.w900,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
outlinedButtonTheme: OutlinedButtonThemeData(
|
||||
style: OutlinedButton.styleFrom(
|
||||
foregroundColor: _uglyFg,
|
||||
side: const BorderSide(color: _uglySecondary, width: 5),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 18),
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(0)),
|
||||
textStyle: const TextStyle(
|
||||
fontWeight: FontWeight.w900,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
textButtonTheme: TextButtonThemeData(
|
||||
style: TextButton.styleFrom(
|
||||
foregroundColor: _uglyError,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14),
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)),
|
||||
textStyle: const TextStyle(fontWeight: FontWeight.w900, fontSize: 16),
|
||||
),
|
||||
),
|
||||
|
||||
inputDecorationTheme: const InputDecorationTheme(
|
||||
filled: true,
|
||||
fillColor: Color(0xFFAAFFAA),
|
||||
hintStyle: TextStyle(
|
||||
color: Color(0xFFFF0000),
|
||||
fontWeight: FontWeight.w900,
|
||||
fontStyle: FontStyle.italic,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
contentPadding: EdgeInsets.symmetric(horizontal: 24, vertical: 20),
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(16),
|
||||
bottomRight: Radius.circular(16),
|
||||
),
|
||||
borderSide: BorderSide(color: _uglySecondary, width: 4),
|
||||
),
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(16),
|
||||
bottomRight: Radius.circular(16),
|
||||
),
|
||||
borderSide: BorderSide(color: _uglyError, width: 4),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(16),
|
||||
bottomRight: Radius.circular(16),
|
||||
),
|
||||
borderSide: BorderSide(color: _uglyPrimary, width: 6),
|
||||
),
|
||||
),
|
||||
|
||||
dialogTheme: DialogThemeData(
|
||||
backgroundColor: _uglySurface,
|
||||
elevation: 16,
|
||||
shadowColor: _uglyFg,
|
||||
surfaceTintColor: _uglyError,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(0),
|
||||
side: const BorderSide(color: _uglyPrimary, width: 5),
|
||||
),
|
||||
titleTextStyle: const TextStyle(
|
||||
color: _uglyFg,
|
||||
fontSize: 26,
|
||||
fontWeight: FontWeight.w900,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
contentTextStyle: const TextStyle(
|
||||
color: _uglyBg,
|
||||
fontWeight: FontWeight.w700,
|
||||
height: 1.8,
|
||||
),
|
||||
),
|
||||
|
||||
floatingActionButtonTheme: const FloatingActionButtonThemeData(
|
||||
backgroundColor: _uglySecondary,
|
||||
foregroundColor: _uglyFg,
|
||||
elevation: 8,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(30),
|
||||
bottomRight: Radius.circular(30),
|
||||
),
|
||||
side: BorderSide(color: _uglyPrimary, width: 4),
|
||||
),
|
||||
),
|
||||
|
||||
listTileTheme: ListTileThemeData(
|
||||
tileColor: _uglyFg,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(0),
|
||||
side: const BorderSide(color: _uglySecondary, width: 3),
|
||||
),
|
||||
iconColor: _uglyBg,
|
||||
textColor: _uglySurface,
|
||||
contentPadding: const EdgeInsets.symmetric(horizontal: 8, vertical: 16),
|
||||
),
|
||||
|
||||
snackBarTheme: SnackBarThemeData(
|
||||
backgroundColor: _uglyPrimary,
|
||||
behavior: SnackBarBehavior.floating,
|
||||
elevation: 8,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(0),
|
||||
side: const BorderSide(color: _uglySecondary, width: 4),
|
||||
),
|
||||
contentTextStyle: const TextStyle(
|
||||
color: Color(0xFF0000FF),
|
||||
fontWeight: FontWeight.w900,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
),
|
||||
|
||||
dividerTheme: const DividerThemeData(
|
||||
color: _uglySecondary,
|
||||
thickness: 5,
|
||||
space: 8,
|
||||
),
|
||||
|
||||
chipTheme: const ChipThemeData(
|
||||
backgroundColor: _uglyError,
|
||||
labelStyle: TextStyle(
|
||||
color: _uglyFg,
|
||||
fontWeight: FontWeight.w900,
|
||||
fontSize: 14,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 10),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.only(
|
||||
topRight: Radius.circular(20),
|
||||
bottomLeft: Radius.circular(20),
|
||||
),
|
||||
side: BorderSide(color: _uglyPrimary, width: 3),
|
||||
),
|
||||
),
|
||||
|
||||
textTheme: const TextTheme(
|
||||
displayLarge: TextStyle(
|
||||
color: _uglyFg,
|
||||
fontWeight: FontWeight.w900,
|
||||
fontSize: 52,
|
||||
letterSpacing: 5,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
headlineMedium: TextStyle(
|
||||
color: _uglyPrimary,
|
||||
fontWeight: FontWeight.w900,
|
||||
fontSize: 34,
|
||||
letterSpacing: 3,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
titleLarge: TextStyle(
|
||||
color: _uglyFg,
|
||||
fontWeight: FontWeight.w900,
|
||||
fontSize: 26,
|
||||
letterSpacing: 2,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
titleMedium: TextStyle(
|
||||
color: _uglyPrimary,
|
||||
fontWeight: FontWeight.w900,
|
||||
fontSize: 20,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
bodyLarge: TextStyle(
|
||||
color: _uglyFg,
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w700,
|
||||
height: 1.8,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
bodyMedium: TextStyle(
|
||||
color: _uglyBg,
|
||||
fontWeight: FontWeight.w700,
|
||||
fontSize: 14,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
bodySmall: TextStyle(
|
||||
color: _uglyError,
|
||||
fontWeight: FontWeight.w900,
|
||||
fontSize: 12,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
labelLarge: TextStyle(
|
||||
color: _uglySecondary,
|
||||
fontWeight: FontWeight.w900,
|
||||
fontSize: 16,
|
||||
fontFamily: 'monospace',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user