init
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# حکمشو — فرانت (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) رجوع کنید.
|
||||
Reference in New Issue
Block a user