<critical_constraints> ❌ NO global flutter command → use fvm flutter ❌ NO Riverpod/Bloc → project uses Streams+Provider ❌ NO Feature-First folders → use Layer-First ✅ MUST verify FVM version matches .fvmrc ✅ MUST run fvm flutter pub run build_runner build after model changes ✅ MUST use extensions from lib/components/Utils.dart </critical_constraints>
<fvm_protocol>
- Check
.fvmrcor.fvm/fvm_config.json - Run
fvm flutter --versionto verify - ALL commands:
fvm flutter <command></fvm_protocol>
<folder_structure> lib/ ├── api/ # Retrofit clients + models ├── components/ # Reusable UI widgets ├── screens/ # Screens by feature (tabs/, auth/,...) ├── constants.dart # App-wide constants └── *Service.dart # Singleton business logic </folder_structure>
<state_management>
- Business logic: Singleton Services with StreamController.broadcast
- UI binding: StreamSubscription in StatefulWidget
- Provider: minimal, for root-level dependency injection only </state_management>
<api_pattern>
- Retrofit:
lib/api/*_api.dart - Models:
lib/api/models/with json_serializable - Generation:
fvm flutter pub run build_runner build</api_pattern>