From e8cde8e1f7f1c766793495bc1845bf2f2c925fff Mon Sep 17 00:00:00 2001 From: Amirmahdi Nourkazemi Date: Wed, 24 Jun 2026 22:56:32 +0330 Subject: [PATCH] feat: cleaning code --- lib/core/theme/app_theme.dart | 27 +++++++++++ lib/core/widgets/game_ui.dart | 6 +-- lib/core/widgets/rank_badge.dart | 4 +- .../auth/presentation/screen/otp_screen.dart | 2 +- .../screen/profile_setup_screen.dart | 2 +- .../game/presentation/screen/game_screen.dart | 12 ++--- .../screen/private_table_screen.dart | 6 +-- .../presentation/screen/tier_list_screen.dart | 2 +- .../presentation/widgets/flame/badges.dart | 6 ++- .../widgets/flame/card_component.dart | 15 +++--- .../presentation/widgets/flame/hokm_game.dart | 15 +----- .../widgets/flame/table_pieces.dart | 8 ++-- .../widgets/flame/turn_timer.dart | 4 +- .../game/presentation/widgets/table_hud.dart | 46 +++++++------------ .../presentation/screen/profile_screen.dart | 12 ++--- .../shop/presentation/screen/shop_screen.dart | 10 ++-- .../shop/presentation/screen/vip_screen.dart | 2 +- .../presentation/screen/lobby_screen.dart | 8 ++-- 18 files changed, 99 insertions(+), 88 deletions(-) diff --git a/lib/core/theme/app_theme.dart b/lib/core/theme/app_theme.dart index e0eb1b6..24f25c8 100644 --- a/lib/core/theme/app_theme.dart +++ b/lib/core/theme/app_theme.dart @@ -1,15 +1,42 @@ import 'package:flutter/material.dart'; /// تم بصری حکم‌شو (الهام‌گرفته از اپ مرجع: قرمز تیره و طلایی). +/// همه‌ی رنگ‌های پرتکرار اینجا متمرکزند تا در کد به‌صورت ثابتِ بی‌نام تکرار نشوند. class AppColors { + // پایه static const bg = Color(0xFF3A0A12); static const bgDark = Color(0xFF240108); static const panel = Color(0xFF5A0E1A); static const gold = Color(0xFFE9B949); static const goldDark = Color(0xFFB8860B); + static const goldFaint = Color(0x33E9B949); // جداکننده/خطِ طلاییِ کم‌رنگ static const accent = Color(0xFFB81D2A); static const green = Color(0xFF2E7D32); static const text = Color(0xFFF5E9D0); + + // معنایی (دکمه‌ها/وضعیت/خال‌ها) + static const success = Color(0xFF3FA34D); // سبزِ روشنِ دکمه + static const successDark = Color(0xFF1B5E20); // سبزِ تیره (گرادیان/درخشش) + static const online = Color(0xFF4CD964); // نشانگرِ اتصالِ آنلاین + static const suitRed = Color(0xFFD32F2F); // دل/خشت + static const suitDark = Color(0xFF1A1A1A); // پیک/گشنیز (مرکّبِ کارت) +} + +/// نمادِ یک‌نواییِ خال و رنگش از روی نامِ کاملِ خال (hearts/diamonds/clubs/spades). +/// منبعِ واحدِ این منطق تا در صفحه‌های مختلف تکرار نشود. +(String, Color) suitGlyph(String? suit) { + switch (suit) { + case 'hearts': + return ('♥', AppColors.suitRed); + case 'diamonds': + return ('♦', AppColors.suitRed); + case 'clubs': + return ('♣', Colors.white); + case 'spades': + return ('♠', Colors.white); + default: + return ('—', Colors.white54); + } } class AppTheme { diff --git a/lib/core/widgets/game_ui.dart b/lib/core/widgets/game_ui.dart index c1cfa52..c413475 100644 --- a/lib/core/widgets/game_ui.dart +++ b/lib/core/widgets/game_ui.dart @@ -20,7 +20,7 @@ class GameBackground extends StatelessWidget { gradient: RadialGradient( center: Alignment(0, -0.4), radius: 1.3, - colors: [Color(0xFF5A0F1E), Color(0xFF240108)], + colors: [Color(0xFF5A0F1E), AppColors.bgDark], stops: [0.0, 1.0], ), ), @@ -33,7 +33,7 @@ class GameBackground extends StatelessWidget { gradient: RadialGradient( center: Alignment(0, -1.1), radius: 1.0, - colors: [Color(0x33E9B949), Color(0x00000000)], + colors: [AppColors.goldFaint, Color(0x00000000)], ), ), ), @@ -65,7 +65,7 @@ class GamePanel extends StatelessWidget { gradient: const LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, - colors: [Color(0xFF6E1322), Color(0xFF3A0A12)], + colors: [Color(0xFF6E1322), AppColors.bg], ), borderRadius: BorderRadius.circular(radius), border: Border.all(color: AppColors.gold, width: 2), diff --git a/lib/core/widgets/rank_badge.dart b/lib/core/widgets/rank_badge.dart index 29108a8..05d3f0f 100644 --- a/lib/core/widgets/rank_badge.dart +++ b/lib/core/widgets/rank_badge.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import '../theme/app_theme.dart'; + /// نشانِ رتبه (برنز/نقره/طلا/الماس/پادشاه) با رنگ و برچسبِ فارسی. class RankBadge extends StatelessWidget { final String tier; // bronze..king @@ -10,7 +12,7 @@ class RankBadge extends StatelessWidget { static const _tiers = { 'bronze': ('برنز', [Color(0xFFCD7F32), Color(0xFF8C5A2B)]), 'silver': ('نقره', [Color(0xFFBFC6CC), Color(0xFF8A949B)]), - 'gold': ('طلا', [Color(0xFFFFD54F), Color(0xFFB8860B)]), + 'gold': ('طلا', [Color(0xFFFFD54F), AppColors.goldDark]), 'diamond': ('الماس', [Color(0xFF5BE0E6), Color(0xFF1E8A99)]), 'king': ('پادشاه', [Color(0xFFB388FF), Color(0xFF6A1B9A)]), }; diff --git a/lib/feature/auth/presentation/screen/otp_screen.dart b/lib/feature/auth/presentation/screen/otp_screen.dart index 4b5ba53..0db6beb 100644 --- a/lib/feature/auth/presentation/screen/otp_screen.dart +++ b/lib/feature/auth/presentation/screen/otp_screen.dart @@ -109,7 +109,7 @@ class _OtpScreenState extends State { GameButton( label: 'ورود', width: double.infinity, - colors: const [Color(0xFF3FA34D), Color(0xFF1B5E20)], + colors: const [AppColors.success, AppColors.successDark], onTap: (!_valid || loading) ? null : () => _submit(context), diff --git a/lib/feature/auth/presentation/screen/profile_setup_screen.dart b/lib/feature/auth/presentation/screen/profile_setup_screen.dart index e65cc3a..fe61a4c 100644 --- a/lib/feature/auth/presentation/screen/profile_setup_screen.dart +++ b/lib/feature/auth/presentation/screen/profile_setup_screen.dart @@ -124,7 +124,7 @@ class _ProfileSetupScreenState extends State { GameButton( label: saving ? 'در حال ذخیره…' : 'تأیید و ورود', width: double.infinity, - colors: const [Color(0xFF3FA34D), Color(0xFF1B5E20)], + colors: const [AppColors.success, AppColors.successDark], onTap: (!_valid || saving) ? null : () => context.read().add( diff --git a/lib/feature/game/presentation/screen/game_screen.dart b/lib/feature/game/presentation/screen/game_screen.dart index 3b05ce1..1fad905 100644 --- a/lib/feature/game/presentation/screen/game_screen.dart +++ b/lib/feature/game/presentation/screen/game_screen.dart @@ -171,7 +171,7 @@ class _GameScreenState extends State { padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 8), decoration: BoxDecoration( gradient: const LinearGradient( - colors: [Color(0xFFE9B949), Color(0xFFB8860B)], + colors: [AppColors.gold, AppColors.goldDark], ), borderRadius: BorderRadius.circular(20), boxShadow: const [BoxShadow(color: Colors.black54, blurRadius: 8)], @@ -179,7 +179,7 @@ class _GameScreenState extends State { child: const Text( 'نوبت شماست', style: TextStyle( - color: Color(0xFF3A0A12), + color: AppColors.bg, fontWeight: FontWeight.bold, fontSize: 16, ), @@ -328,7 +328,7 @@ class _GameScreenState extends State { child: Text( '$_countdown', style: const TextStyle( - color: Color(0xFF3A0A12), + color: AppColors.bg, fontSize: 26, fontWeight: FontWeight.bold, ), @@ -398,8 +398,8 @@ class _GameScreenState extends State { Widget _trumpPicker(BuildContext context) { const suits = [ ('spades', '♠', 'پیک', Colors.white), - ('hearts', '♥', 'دل', Color(0xFFD32F2F)), - ('diamonds', '♦', 'خشت', Color(0xFFD32F2F)), + ('hearts', '♥', 'دل', AppColors.suitRed), + ('diamonds', '♦', 'خشت', AppColors.suitRed), ('clubs', '♣', 'گشنیز', Colors.white), ]; return Container( @@ -448,7 +448,7 @@ class _GameScreenState extends State { ], ), const SizedBox(height: 16), - const Divider(color: Color(0x33E9B949), height: 1), + const Divider(color: AppColors.goldFaint, height: 1), const SizedBox(height: 12), // بُرِ مجدد با مصرفِ یک بلیت (۵ کارتِ تازه، سپس باز هم انتخابِ حکم). BlocBuilder( diff --git a/lib/feature/game/presentation/screen/private_table_screen.dart b/lib/feature/game/presentation/screen/private_table_screen.dart index 35ed1d1..86e3071 100644 --- a/lib/feature/game/presentation/screen/private_table_screen.dart +++ b/lib/feature/game/presentation/screen/private_table_screen.dart @@ -211,7 +211,7 @@ class _LobbyViewState extends State<_LobbyView> { label: 'شروع بازی', icon: Icons.play_arrow, width: double.infinity, - colors: const [Color(0xFF3FA34D), Color(0xFF1B5E20)], + colors: const [AppColors.success, AppColors.successDark], onTap: () => context.read().startTable(_hands), ) else @@ -316,7 +316,7 @@ class _LobbyViewState extends State<_LobbyView> { shape: BoxShape.circle, gradient: selected ? const LinearGradient( - colors: [Color(0xFFE9B949), Color(0xFFB8860B)]) + colors: [AppColors.gold, AppColors.goldDark]) : null, color: selected ? null : AppColors.panel, border: Border.all( @@ -326,7 +326,7 @@ class _LobbyViewState extends State<_LobbyView> { child: Text( fa[h]!, style: TextStyle( - color: selected ? const Color(0xFF3A0A12) : Colors.white, + color: selected ? AppColors.bg : Colors.white, fontSize: 22, fontWeight: FontWeight.bold, ), diff --git a/lib/feature/game/presentation/screen/tier_list_screen.dart b/lib/feature/game/presentation/screen/tier_list_screen.dart index d6e624f..e944841 100644 --- a/lib/feature/game/presentation/screen/tier_list_screen.dart +++ b/lib/feature/game/presentation/screen/tier_list_screen.dart @@ -89,7 +89,7 @@ class _TierCard extends StatelessWidget { const _TierCard({required this.tier, required this.index}); static const _palettes = [ - [Color(0xFF43A047), Color(0xFF1B5E20)], + [Color(0xFF43A047), AppColors.successDark], [Color(0xFFE53935), Color(0xFF8E0E1B)], [Color(0xFF1E88E5), Color(0xFF0D3C73)], [Color(0xFF8E24AA), Color(0xFF4A0D5E)], diff --git a/lib/feature/game/presentation/widgets/flame/badges.dart b/lib/feature/game/presentation/widgets/flame/badges.dart index 068a8fc..897e6e5 100644 --- a/lib/feature/game/presentation/widgets/flame/badges.dart +++ b/lib/feature/game/presentation/widgets/flame/badges.dart @@ -4,8 +4,10 @@ import 'package:flame/components.dart'; import 'package:flame/effects.dart'; import 'package:flutter/material.dart'; -const _gold = Color(0xFFE9B949); -const _goldDark = Color(0xFF8A5A00); +import '../../../../../core/theme/app_theme.dart'; + +const _gold = AppColors.gold; +const _goldDark = Color(0xFF8A5A00); // طلاییِ تیره‌ترِ مخصوصِ نشان‌ها /// ستاره‌ی طلایی روی بازیکنِ نوبت‌دار (مطابقِ تصویرِ مرجع). class StarBadge extends PositionComponent { diff --git a/lib/feature/game/presentation/widgets/flame/card_component.dart b/lib/feature/game/presentation/widgets/flame/card_component.dart index 46dc549..901bfb1 100644 --- a/lib/feature/game/presentation/widgets/flame/card_component.dart +++ b/lib/feature/game/presentation/widgets/flame/card_component.dart @@ -4,6 +4,7 @@ import 'package:flame/events.dart'; import 'package:flutter/material.dart'; import '../../../../../core/network/card_images.dart'; +import '../../../../../core/theme/app_theme.dart'; /// یک کارت روی میز؛ اگر تصویر `assets/images/cards/.png` موجود باشد از آن /// استفاده می‌کند، وگرنه نسخه‌ی برداری می‌کشد. برای پشت کارت `back.jpg`. @@ -180,7 +181,7 @@ class CardComponent extends PositionComponent Paint() ..style = PaintingStyle.stroke ..strokeWidth = 1.5 - ..color = const Color(0xFF1A1A1A), + ..color = AppColors.suitDark, ); // هایلایت طلایی: هنگام کشیدن همیشه (انتخاب)، و پررنگ‌تر روی ناحیه‌ی انداختن. @@ -190,7 +191,7 @@ class CardComponent extends PositionComponent Paint() ..style = PaintingStyle.stroke ..strokeWidth = size.x * (_overZone ? 0.06 : 0.035) - ..color = const Color(0xFFE9B949) + ..color = AppColors.gold ..maskFilter = MaskFilter.blur(BlurStyle.normal, _overZone ? 6 : 3), ); } @@ -204,7 +205,7 @@ class CardComponent extends PositionComponent Paint() ..style = PaintingStyle.stroke ..strokeWidth = 2 - ..color = const Color(0xFFE9B949), + ..color = AppColors.gold, ); } @@ -224,13 +225,13 @@ class CardComponent extends PositionComponent (String, Color) _suit(String s) { switch (s) { case 'H': - return ('♥', const Color(0xFFD32F2F)); + return ('♥', AppColors.suitRed); case 'D': - return ('♦', const Color(0xFFD32F2F)); + return ('♦', AppColors.suitRed); case 'C': - return ('♣', const Color(0xFF1A1A1A)); + return ('♣', AppColors.suitDark); default: - return ('♠', const Color(0xFF1A1A1A)); + return ('♠', AppColors.suitDark); } } diff --git a/lib/feature/game/presentation/widgets/flame/hokm_game.dart b/lib/feature/game/presentation/widgets/flame/hokm_game.dart index 81db71a..0984bab 100644 --- a/lib/feature/game/presentation/widgets/flame/hokm_game.dart +++ b/lib/feature/game/presentation/widgets/flame/hokm_game.dart @@ -7,6 +7,7 @@ import 'package:flame/game.dart'; import 'package:flutter/material.dart'; import '../../../../../core/service/app_sounds.dart'; +import '../../../../../core/theme/app_theme.dart'; import '../../../domain/entities/game_entities.dart'; import '../../bloc/game_bloc.dart'; import 'card_codes.dart'; @@ -222,7 +223,7 @@ class HokmGame extends FlameGame { /// نمایشِ بزرگ و گذرای حکمِ انتخاب‌شده در مرکزِ میز (با پاپ). void _spawnTrumpReveal(String trump) { - final (sym, col) = _trumpGlyph(trump); + final (sym, col) = suitGlyph(trump); final reveal = TextComponent( text: 'حکم $sym', anchor: Anchor.center, @@ -606,16 +607,4 @@ class HokmGame extends FlameGame { add(c); } - (String, Color) _trumpGlyph(String suit) { - switch (suit) { - case 'hearts': - return ('♥', const Color(0xFFD32F2F)); - case 'diamonds': - return ('♦', const Color(0xFFD32F2F)); - case 'clubs': - return ('♣', Colors.white); - default: - return ('♠', Colors.white); - } - } } diff --git a/lib/feature/game/presentation/widgets/flame/table_pieces.dart b/lib/feature/game/presentation/widgets/flame/table_pieces.dart index e6c7a2e..edab3b7 100644 --- a/lib/feature/game/presentation/widgets/flame/table_pieces.dart +++ b/lib/feature/game/presentation/widgets/flame/table_pieces.dart @@ -3,9 +3,11 @@ import 'dart:math' as math; import 'package:flame/components.dart'; import 'package:flutter/material.dart'; -// رنگ‌های مشترکِ میز. -const _gold = Color(0xFFE9B949); -const _goldDark = Color(0xFFB8860B); +import '../../../../../core/theme/app_theme.dart'; + +// رنگ‌های مشترکِ میز (منبعِ واحد در AppColors). +const _gold = AppColors.gold; +const _goldDark = AppColors.goldDark; /// میز: زمینِ سبزِ نمدی در کلِ صفحه + یک «میزِ» مرکزیِ سرمه‌ای با قابِ طلاییِ /// دولایه (مطابقِ تصویرِ مرجع). کارت‌های زمین داخلِ ناحیه‌ی سرمه‌ای انداخته می‌شوند diff --git a/lib/feature/game/presentation/widgets/flame/turn_timer.dart b/lib/feature/game/presentation/widgets/flame/turn_timer.dart index 410b286..319cb8f 100644 --- a/lib/feature/game/presentation/widgets/flame/turn_timer.dart +++ b/lib/feature/game/presentation/widgets/flame/turn_timer.dart @@ -3,6 +3,8 @@ import 'dart:math' as math; import 'package:flame/components.dart'; import 'package:flutter/material.dart'; +import '../../../../../core/theme/app_theme.dart'; + /// حلقه‌ی شمارشِ معکوسِ نوبت: کمانی که در طولِ مهلتِ نوبت خالی می‌شود. /// در ثانیه‌های پایانی قرمز و ضربان‌دار می‌شود. (صدای ضربانِ قلب در HokmGame /// مدیریت می‌شود تا هنگامِ بازی‌شدنِ کارت بلافاصله قطع شود.) @@ -50,7 +52,7 @@ class TurnTimer extends PositionComponent { : (1 - _elapsed / durationSeconds).clamp(0.0, 1.0); if (frac <= 0) return; - final color = frac > 0.35 ? const Color(0xFFE9B949) : const Color(0xFFE53935); + final color = frac > 0.35 ? AppColors.gold : AppColors.suitRed; final arc = Paint() ..style = PaintingStyle.stroke ..strokeWidth = 4 diff --git a/lib/feature/game/presentation/widgets/table_hud.dart b/lib/feature/game/presentation/widgets/table_hud.dart index 4f9314f..d534bdc 100644 --- a/lib/feature/game/presentation/widgets/table_hud.dart +++ b/lib/feature/game/presentation/widgets/table_hud.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:random_avatar/random_avatar.dart'; import '../../../../core/network/ws_client.dart'; +import '../../../../core/theme/app_theme.dart'; import '../../domain/entities/game_entities.dart'; /// اوورلیِ روی صحنه‌ی Flame: آواتارِ بازیکنان با قابِ طلایی، نام، نشانِ رتبه، @@ -105,7 +106,7 @@ class TableHud extends StatelessWidget { width: 1, height: 30, margin: const EdgeInsets.symmetric(horizontal: 12), - color: const Color(0x33E9B949), + color: AppColors.goldFaint, ), _scoreCol('حریف', opp), ], @@ -121,7 +122,7 @@ class TableHud extends StatelessWidget { children: [ Text( label, - style: const TextStyle(color: Color(0xFFE9B949), fontSize: 12), + style: const TextStyle(color: AppColors.gold, fontSize: 12), ), Text( '$v', @@ -135,7 +136,7 @@ class TableHud extends StatelessWidget { ); Widget _hokmChip() { - final (glyph, color) = _trumpGlyph(s.trump); + final (glyph, color) = suitGlyph(s.trump); return Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 5), decoration: _panelDeco(), @@ -145,7 +146,7 @@ class TableHud extends StatelessWidget { const Text( 'حکم', style: TextStyle( - color: Color(0xFFE9B949), + color: AppColors.gold, fontSize: 13, fontWeight: FontWeight.bold, ), @@ -168,14 +169,14 @@ class TableHud extends StatelessWidget { children: [ Icon( ok ? Icons.wifi : Icons.wifi_off, - color: ok ? const Color(0xFF4CD964) : Colors.redAccent, + color: ok ? AppColors.online : Colors.redAccent, size: 16, ), const SizedBox(width: 5), Text( ok ? 'آنلاین' : 'قطع', style: TextStyle( - color: ok ? const Color(0xFF4CD964) : Colors.redAccent, + color: ok ? AppColors.online : Colors.redAccent, fontSize: 12, fontWeight: FontWeight.bold, ), @@ -186,7 +187,7 @@ class TableHud extends StatelessWidget { const SizedBox(width: 8), _RoundBtn( icon: Icons.logout, - color: const Color(0xFFB81D2A), + color: AppColors.accent, onTap: onExit, size: 40, ), @@ -201,24 +202,9 @@ class TableHud extends StatelessWidget { colors: [Color(0xFF2A2018), Color(0xFF14100B)], ), borderRadius: BorderRadius.circular(14), - border: Border.all(color: const Color(0xFFB8860B), width: 1.4), + border: Border.all(color: AppColors.goldDark, width: 1.4), boxShadow: const [BoxShadow(color: Colors.black54, blurRadius: 6)], ); - - (String, Color) _trumpGlyph(String? suit) { - switch (suit) { - case 'hearts': - return ('♥', const Color(0xFFE53935)); - case 'diamonds': - return ('♦', const Color(0xFFE53935)); - case 'clubs': - return ('♣', Colors.white); - case 'spades': - return ('♠', Colors.white); - default: - return ('—', Colors.white54); - } - } } class _PlayerSeat extends StatelessWidget { @@ -256,7 +242,7 @@ class _PlayerSeat extends StatelessWidget { color: const Color(0xCC14100B), borderRadius: BorderRadius.circular(10), border: Border.all( - color: isTurn ? const Color(0xFFE9B949) : const Color(0x55B8860B), + color: isTurn ? AppColors.gold : const Color(0x55B8860B), ), ), child: Text( @@ -265,7 +251,7 @@ class _PlayerSeat extends StatelessWidget { overflow: TextOverflow.ellipsis, textAlign: TextAlign.center, style: TextStyle( - color: isTurn ? const Color(0xFFE9B949) : Colors.white, + color: isTurn ? AppColors.gold : Colors.white, fontSize: diameter * 0.18, fontWeight: FontWeight.bold, ), @@ -288,7 +274,7 @@ class _PlayerSeat extends StatelessWidget { gradient: const LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, - colors: [Color(0xFFF3D27A), Color(0xFFB8860B)], + colors: [Color(0xFFF3D27A), AppColors.goldDark], ), boxShadow: const [ BoxShadow(color: Colors.black54, blurRadius: 6), @@ -359,7 +345,7 @@ class _PlayerSeat extends StatelessWidget { Text( '${player.coins}', style: TextStyle( - color: const Color(0xFFE9B949), + color: AppColors.gold, fontSize: diameter * 0.16, ), ), @@ -450,7 +436,7 @@ class _RingPainter extends CustomPainter { const start = -1.5708; // بالا final sweep = 6.28318 * left; final color = - left < 0.3 ? const Color(0xFFE53935) : const Color(0xFF4CD964); + left < 0.3 ? AppColors.suitRed : AppColors.online; canvas.drawArc( Rect.fromCircle(center: center, radius: radius), start, @@ -524,7 +510,7 @@ class _TricksBadgeState extends State<_TricksBadge> decoration: BoxDecoration( color: const Color(0xFF7B0E14), borderRadius: BorderRadius.circular(d), - border: Border.all(color: const Color(0xFFE9B949), width: 1.4), + border: Border.all(color: AppColors.gold, width: 1.4), boxShadow: const [BoxShadow(color: Colors.black54, blurRadius: 4)], ), child: Row( @@ -566,7 +552,7 @@ class _RoundBtn extends StatelessWidget { decoration: BoxDecoration( color: color, shape: BoxShape.circle, - border: Border.all(color: const Color(0xFFE9B949), width: 1.6), + border: Border.all(color: AppColors.gold, width: 1.6), boxShadow: const [BoxShadow(color: Colors.black54, blurRadius: 6)], ), child: Icon(icon, color: Colors.white, size: size * 0.5), diff --git a/lib/feature/profile/presentation/screen/profile_screen.dart b/lib/feature/profile/presentation/screen/profile_screen.dart index d5b5464..2c66d6f 100644 --- a/lib/feature/profile/presentation/screen/profile_screen.dart +++ b/lib/feature/profile/presentation/screen/profile_screen.dart @@ -126,12 +126,12 @@ class ProfileScreen extends StatelessWidget { decoration: const BoxDecoration( shape: BoxShape.circle, gradient: LinearGradient( - colors: [Color(0xFFFFD54F), Color(0xFFB8860B)], + colors: [Color(0xFFFFD54F), AppColors.goldDark], ), ), child: const Icon( Icons.edit, - color: Color(0xFF3A0A12), + color: AppColors.bg, size: 18, ), ), @@ -246,7 +246,7 @@ class ProfileScreen extends StatelessWidget { GameButton( label: 'تهیه اشتراک VIP', icon: Icons.workspace_premium, - colors: const [Color(0xFFFFC107), Color(0xFFB8860B)], + colors: const [Color(0xFFFFC107), AppColors.goldDark], onTap: () async { await context.push('/vip'); if (context.mounted) { @@ -335,14 +335,14 @@ class _VipBadge extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3), decoration: BoxDecoration( gradient: const LinearGradient( - colors: [Color(0xFFFFD54F), Color(0xFFB8860B)], + colors: [Color(0xFFFFD54F), AppColors.goldDark], ), borderRadius: BorderRadius.circular(8), ), child: const Text( 'VIP', style: TextStyle( - color: Color(0xFF3A0A12), + color: AppColors.bg, fontWeight: FontWeight.bold, fontSize: 12, ), @@ -464,7 +464,7 @@ class _EditProfileSheetState extends State<_EditProfileSheet> { GameButton( label: 'تأیید', width: double.infinity, - colors: const [Color(0xFF3FA34D), Color(0xFF1B5E20)], + colors: const [AppColors.success, AppColors.successDark], onTap: _valid ? () => Navigator.pop(context, { diff --git a/lib/feature/shop/presentation/screen/shop_screen.dart b/lib/feature/shop/presentation/screen/shop_screen.dart index 4f478ff..9288d00 100644 --- a/lib/feature/shop/presentation/screen/shop_screen.dart +++ b/lib/feature/shop/presentation/screen/shop_screen.dart @@ -198,7 +198,7 @@ class _CoinsTab extends StatelessWidget { children: [ _ItemCard( title: 'سکه رایگان', - glowColor: const Color(0xFF1B5E20), + glowColor: AppColors.successDark, icon: Icons.card_giftcard, subtitle: 'با دیدن تبلیغ', action: _PriceButton( @@ -210,7 +210,7 @@ class _CoinsTab extends StatelessWidget { for (final p in packages) _ItemCard( title: p.title, - glowColor: const Color(0xFF1B5E20), + glowColor: AppColors.successDark, icon: Icons.savings, ribbon: p.bonusPct > 0 ? '+${p.bonusPct}٪' : null, subtitle: @@ -402,7 +402,7 @@ class _ItemCard extends StatelessWidget { gradient: const LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, - colors: [Color(0xFF6E1322), Color(0xFF3A0A12)], + colors: [Color(0xFF6E1322), AppColors.bg], ), borderRadius: BorderRadius.circular(14), border: Border.all(color: AppColors.gold, width: 1.6), @@ -447,7 +447,7 @@ class _ItemCard extends StatelessWidget { angle: -0.7, child: Container( padding: const EdgeInsets.symmetric(horizontal: 26, vertical: 3), - color: const Color(0xFF2E7D32), + color: AppColors.green, child: Text( ribbon!, style: const TextStyle( @@ -571,7 +571,7 @@ class _PriceButton extends StatelessWidget { disabled ? const [Color(0xFF555555), Color(0xFF333333)] : green - ? const [Color(0xFF3FA34D), Color(0xFF1B5E20)] + ? const [AppColors.success, AppColors.successDark] : const [Color(0xFFD83A4A), Color(0xFF8E0E1B)]; return Opacity( opacity: disabled ? 0.85 : 1, diff --git a/lib/feature/shop/presentation/screen/vip_screen.dart b/lib/feature/shop/presentation/screen/vip_screen.dart index 2296631..ca1a228 100644 --- a/lib/feature/shop/presentation/screen/vip_screen.dart +++ b/lib/feature/shop/presentation/screen/vip_screen.dart @@ -159,7 +159,7 @@ class _VipPackageTile extends StatelessWidget { gradient: const LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, - colors: [Color(0xFF6E1322), Color(0xFF3A0A12)], + colors: [Color(0xFF6E1322), AppColors.bg], ), borderRadius: BorderRadius.circular(14), border: Border.all(color: AppColors.gold, width: 1.4), diff --git a/lib/feature/wallet/presentation/screen/lobby_screen.dart b/lib/feature/wallet/presentation/screen/lobby_screen.dart index e57223c..a73e5d4 100644 --- a/lib/feature/wallet/presentation/screen/lobby_screen.dart +++ b/lib/feature/wallet/presentation/screen/lobby_screen.dart @@ -104,7 +104,7 @@ class _LobbyScreenState extends State { label: 'سکه روزانه', icon: Icons.monetization_on, width: double.infinity, - colors: const [Color(0xFF3FA34D), Color(0xFF1B5E20)], + colors: const [AppColors.success, AppColors.successDark], onTap: () => context.read().add(ClaimDailyEvent()), ), @@ -152,7 +152,7 @@ class _TopBar extends StatelessWidget { gradient: const LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, - colors: [Color(0xFF3A0A12), Color(0xFF1A0106)], + colors: [AppColors.bg, Color(0xFF1A0106)], ), borderRadius: BorderRadius.circular(16), border: Border.all(color: AppColors.goldDark), @@ -246,12 +246,12 @@ class _VipTag extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 1), decoration: BoxDecoration( gradient: const LinearGradient( - colors: [Color(0xFFFFD54F), Color(0xFFB8860B)]), + colors: [Color(0xFFFFD54F), AppColors.goldDark]), borderRadius: BorderRadius.circular(6), ), child: const Text('VIP', style: TextStyle( - color: Color(0xFF3A0A12), + color: AppColors.bg, fontWeight: FontWeight.bold, fontSize: 10)), );