2026-07-03 21:56:34 +03:30
2026-07-03 21:56:34 +03:30
2026-06-16 06:08:40 +03:30
2026-06-24 14:17:21 +03:30
2026-06-15 16:42:28 +03:30
2026-07-03 21:56:34 +03:30
2026-06-17 12:57:28 +03:30
2026-06-15 16:42:28 +03:30
2026-06-15 16:42:28 +03:30
2026-06-15 16:42:28 +03:30
2026-06-15 16:42:28 +03:30
2026-06-18 21:57:28 +03:30
2026-06-24 08:35:31 +03:30
2026-06-15 16:42:28 +03:30

حکم‌شو — فرانت (Flutter + Flame)

کلاینت بازی حکم. فازهای انجام‌شده: اسکلت + احراز هویت OTP + لابی/کیف‌پول + فروشگاه + صحنه‌ی بازی با Flame.

پیش‌نیاز شبکه (میرور مایکت)

به‌خاطر محدودیت دسترسی، از میرور مایکت استفاده می‌شود:

export PUB_HOSTED_URL=https://pub.myket.ir
export FLUTTER_STORAGE_BASE_URL=https://pub.myket.ir

این دو خط در ~/.zshrc ست شده‌اند (دائمی). برای Gradle هم یک init script سراسری در ~/.gradle/init.gradle همه‌ی buildها را به maven.myket.ir هدایت می‌کند، و android/ به همین مخزن تنظیم شده است.

اجرا

flutter pub get
flutter run -d chrome      # وب (بدون نیاز به NDK/Gradle) ✓
flutter run                # موبایل (نیازمند نصب NDK — به پایین رجوع کنید)

اتصال به بک‌اند با --dart-define=BASE_URL=... قابل تنظیم است:

  • امولاتور اندروید → پیش‌فرض http://10.0.2.2:8080 (localhostِ میزبان).
  • وب / شبیه‌ساز iOS → --dart-define=BASE_URL=http://localhost:8080.
  • پروداکشن → --dart-define=BASE_URL=https://api.hakemsho.ir.

وضعیت تأیید

  • flutter analyze → بدون خطا ✓
  • flutter test → پاس (تست مدل Wallet) ✓
  • flutter build web → موفق ✓

نکات build اندروید (شبکه‌ی محدود)

  • NDK: AGP به NDK 27.0.12077973 نیاز دارد. اگر NDK را دستی دانلود کرده‌اید (مثلاً android-ndk-r27)، باید پوشه به‌نامِ شماره‌ی نسخه باشد تا AGP پیدایش کند:
    cd ~/Library/Android/sdk/ndk && ln -sfn android-ndk-r27 27.0.12077973
    
  • گریدل از مایکت: ~/.gradle/init.gradle همه‌ی buildها را (شامل buildscript پلاگین‌ها) به maven.myket.ir هدایت می‌کند. این برای flutter_secure_storage لازم است که خودش com.android.tools.build:gradle:8.13.2 را اعلام می‌کند.
  • minSdk 23 / compileSdk 36: به‌خاطر flutter_secure_storage در android/app/build.gradle.kts تنظیم شده.
  • هشدار «unable to detect Gradle/AGP versions» بی‌ضرر است (به‌خاطر بلاک‌بودن dl.google.com برای چک نسخه).

flutter build apk --debug ✓ موفق.

ساختار

lib/
├── main.dart                     نقطه ورود (تعیین مسیر اولیه بر اساس توکن)
├── app.dart                      MaterialApp.router + RTL + BlocProviderها
├── core/
│   ├── config.dart               baseUrl و آدرس WebSocket
│   ├── network/api_client.dart   Dio + تزریق خودکار Bearer
│   ├── storage/token_storage.dart ذخیره‌ی امن JWT
│   └── theme/app_theme.dart      تم قرمز/طلایی، فونت فارسی، RTL
└── features/
    ├── auth/                     repository، cubit، صفحه موبایل و OTP
    ├── lobby/                    مدل Wallet، cubit، صفحه لابی
    ├── shop/                     مدل‌ها، repository، cubit، صفحه فروشگاه (۴ تب)
    └── game/                     مدل‌ها، WS cubit، لیست میزها، صفحه بازی
        └── flame/                HokmGame (صحنه میز) + CardComponent

کارت‌ها از assets/images/cards/<CODE>.png بارگذاری می‌شوند (۵۲ کارت + back.jpg)؛ اگر تصویری نبود، CardComponent نسخه‌ی برداری می‌کشد.

قدم بعدی

  • انیمیشن‌ها (پخش/انداختن کارت)، صدا، و صفحه‌ی نتایج بهتر.
  • اتصال خرید واقعی IAP (پلاگین بازار/مایکت) و تبلیغ تپسل (فعلاً توکن توسعه‌ای به بک‌اند می‌رود).
  • به ../FRONTEND_PLAN.md رجوع کنید.
S
Description
No description provided
Readme
13 MiB
Languages
Dart 75.7%
HTML 24%
Ruby 0.2%