Minimal e-commerce Flutter app with Riverpod state management, GoRouter routing, and cart persistence.
Use the built-in tasks for a one-click flow:
- 
Build debug APK
- VS Code → Terminal → Run Task… → "Flutter: Build Debug APK"
 
 - 
Install + launch on emulator/device
- VS Code → Terminal → Run Task… → "Android: Install+Launch Debug APK"
 
 - 
One step (build + install + launch)
- VS Code → Terminal → Run Task… → "Android: Build+Install+Launch (Debug)"
 
 
The install+launch task calls scripts/android-install-launch.ps1, which:
- Ensures ANDROID_HOME and ANDROID_SDK_ROOT
 - Starts the 
Medium_PhoneAVD if none is connected - Waits for a device, installs the APK, and launches the app package 
com.example.my_flutter_store 
- Ensure you have an AVD named 
Medium_Phoneor adjust the script atscripts/android-install-launch.ps1. - If APK not found, run the build task first.
 - To speed up Gradle: add 
org.gradle.caching=trueinandroid/gradle.properties. - If you see network timeouts on Gradle downloads, re-run; the cache will be populated.
 
This app reads configuration via compile-time defines using AppConfig.current.
- Files in 
configs/(dev.json, stage.json, prod.json) define values likeAPI_BASE_URL. - Leave 
API_BASE_URLempty to use the in-memory products repository. 
Examples:
flutter run --dart-define-from-file=configs/dev.json
flutter build apk --debug --dart-define-from-file=configs/dev.json
GitHub Actions workflow in .github/workflows/ci.yml runs:
- flutter analyze
 - flutter test
 - build debug APK (pushes only) and uploads as an artifact