46a649166bec2603971ad07dd1bad2355295c024
حکمشو — فرانت (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 رجوع کنید.
Languages
Dart
75.7%
HTML
24%
Ruby
0.2%