ابزارها و Dependencyهای Mobile
pubspec.yaml و pubspec.lock منبع حقیقت نسخه دقیق هستند. ارتقای SDK یا Package در Pull Request مستقل با Changelog، Test، Analyze و Build پلتفرم انجام میشود.
Baseline نصبشده
| نیاز | انتخاب | نسخه | دلیل |
|---|---|---|---|
| SDK | Flutter Stable | 3.44.9 |
Runtime چندسکویی Pinشده |
| زبان | Dart | 3.12.2 |
نسخه همراه Flutter |
| State و DI | flutter_riverpod |
3.4.2 |
State صریح، Testability و کنترل Rebuild |
| Navigation | go_router |
17.4.0 |
Deep Link، Redirect و Routing Declarative |
| Localization | gen_l10n و intl |
SDK / 0.20.2 |
راهکار رسمی و پشتیبانی RTL |
| UI | Material 3 | SDK | پایه Design System بدون UI Kit سنگین |
| Lint | very_good_analysis |
10.3.0 |
تحلیل سختگیرانه و یکسان |
| Test | flutter_test |
SDK | Unit و Widget Test |
| CI | GitHub Actions | SHA-pinشده | Format، Analyze، Test و Build |
Packageهای تاییدشده ولی نصبنشده
این Packageها فقط هنگام Feature مصرفکننده اضافه میشوند:
- HTTP:
dioبا یک Client پیکربندیشده، Timeout و Interceptor محدود؛ - Token Storage:
flutter_secure_storageفقط برای Refresh Token؛ - Offline Relational Cache و Queue:
drift؛ - Push: FCM/APNs پشت Interface داخلی؛
- API Client: OpenAPI Generator با
dart-dioپس از Contract Acceptance Test؛ - Animation: APIهای خود Flutter و Package ثالث فقط با نیاز Design System.
قرارداد Code Generation
خروجی OpenAPI باید در مسیر Generated ایزوله، با Generator و Config Pinشده و بدون ویرایش دستی باشد. CI باید تولید دوباره بدون Diff را بررسی کند. Generated DTO با Domain Model یکی فرض نمیشود و Adapter مسئول Mapping است.
سیاست Package
پیش از افزودن Package، License، Maintenance، Popularity بهتنهایی نه، Advisory، Platform Support، Binary Size، Startup، Memory، Permission و جایگزین SDK بررسی میشوند. Version Range شناور برای Dependency محصول مجاز نیست.
انتخابهای ردشده بهعنوان پیشفرض
- GetX، Redux، BLoC، MobX،
get_itوinjectableدر کنار Riverpod؛ - Hive یا Isar پیش از اثبات مزیت نسبت به Drift؛
- Token در SharedPreferences یا Database؛
- UI Kit بزرگ،
flutter_screenutilو Breakpointهای Hard-coded؛ - Firebase Auth، GraphQL و WebView بدون تصمیم محصول و معماری؛
- Secret در Source، Asset، ARB یا
dart-define.