74 lines
4.1 KiB
Markdown
74 lines
4.1 KiB
Markdown
# حکمشو — فرانت (Flutter + Flame)
|
|
|
|
کلاینت بازی حکم. فازهای انجامشده: **اسکلت + احراز هویت OTP + لابی/کیفپول + فروشگاه + صحنهی بازی با Flame**.
|
|
|
|
## پیشنیاز شبکه (میرور مایکت)
|
|
|
|
بهخاطر محدودیت دسترسی، از میرور مایکت استفاده میشود:
|
|
|
|
```bash
|
|
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/` به همین مخزن تنظیم شده است.
|
|
|
|
## اجرا
|
|
|
|
```bash
|
|
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 پیدایش کند:
|
|
```bash
|
|
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](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](../FRONTEND_PLAN.md) رجوع کنید.
|