Overview
Vitu uses carefully selected Flutter packages to provide wellness tracking features including AI-powered nutrition analysis, activity tracking, data visualization, and local storage.SDK Requirements
Dart SDK
- Dart 3.10.8 provides null safety, enhanced type checking, and modern language features
- Required for compatibility with Flutter 3.x and Material 3 components
Production Dependencies
Core Flutter
flutter
- Material Design widgets (Scaffold, AppBar, BottomNavigationBar)
- State management (StatefulWidget, StatelessWidget)
- Navigation (Navigator, MaterialPageRoute)
- Animations (AnimationController, AnimatedSwitcher)
cupertino_icons
- Provides iOS-style icons for cross-platform consistency
- Used in navigation and UI elements
Media & File Management
image_picker
- Capturing food photos for AI analysis (lib/main.dart:534-569)
- Gallery selection for analyzing saved photos
- Both camera and gallery sources supported
- iOS: Requires
NSCameraUsageDescriptionandNSPhotoLibraryUsageDescriptionin Info.plist - Android: Requires camera and storage permissions in AndroidManifest.xml
path_provider
- Storing captured food photos (lib/main.dart:550-554)
- Accessing app documents directory
- Persistent local file storage
Data Visualization
fl_chart
- PieChart: Nutritional macros breakdown (protein/carbs/fat) - lib/main.dart:1060-1070
- LineChart: Real-time exercise activity monitoring - lib/main.dart:2242-2308
- BarChart: Weekly step count and hydration trends - lib/main.dart:2344-2430
PieChart- Nutrient distributionLineChart- Cardio activity over timeBarChart- Weekly activity summaries
- Smooth animations (swapAnimationDuration)
- Custom colors and gradients
- Touch interactions
- Responsive sizing
Local Storage
shared_preferences
- Lightweight preference storage
- Compatibility layer (primary storage is Hive)
hive
- Core data storage engine
- Stores user profiles, settings, and activity data
- No backend required - 100% local
users- User profiles and authenticationuser_settings- Theme and preferencesdaily_exercise- Step counts and activitieshydration_logs- Water intake eventsdaily_hydration_summary- Daily summaries
- Fast read/write performance
- No SQL schema required
- Type-safe with code generation
- Cross-platform support
- Offline-first architecture
hive_flutter
- Hive initialization (lib/main.dart:23-28)
- Flutter-optimized storage paths
- Box management helpers
Activity & Sensors
geolocator
- Detecting movement speed (km/h) - lib/main.dart:1773-1791
- Preventing step counting while in vehicle (speed > 15 km/h)
- Activity classification (walking, running, vehicle)
- Location permissions management
- Accurate GPS positioning
- Continuous position stream
- Built-in permission handling
- Cross-platform support
sensors_plus
- Step detection via accelerometer - lib/main.dart:1806-1848
- Movement magnitude calculation
- Real-time activity monitoring
- Walking: magnitude > 0.9
- Running: magnitude > 1.4
- Debounce: 320-450ms between steps
activity_recognition_flutter due to AGP 8+ incompatibility (see pubspec.yaml:24).
AI Integration
google_generative_ai
-
Food Analysis - Analyzes photos to extract:
- Dish name
- Estimated calories (kcal)
- Macronutrients (protein, carbs, fat)
- Personalized based on user profile (age, weight, height, gender)
-
Recipe Recommendations - Generates 3 healthy recipes:
- Ingredients list
- Preparation time
- Difficulty level
- Nutritional estimates
- Health benefits explanation
-
Workout Suggestions - Creates exercise routines:
- Personalized to user fitness level
- 4 sessions per routine type (Strength/Yoga/Stretching)
- Detailed exercise breakdowns
gemini-2.5-flash
API Key Configuration:
- API key is hardcoded in source (lib/main.dart:489)
- Should use environment variables or secure storage in production
- Generate new key at: https://aistudio.google.com/app/apikey
GenerativeAIException- API errors (invalid key, rate limits)SocketException- Network connectivity issuesTimeoutException- 20-second timeout on requests
Monitoring
screen_state
- Automatic sleep detection when screen turns off (19:00-07:00)
- Sleep duration calculation
- Automatic quality rating based on hours slept
WidgetsBindingObserver for app lifecycle (paused/resumed) rather than direct screen_state integration.
Development Dependencies
flutter_test
flutter_lints
analysis_options.yaml.
Benefits:
- Code quality enforcement
- Best practices recommendations
- Catch common mistakes
- Consistent code style
flutter_launcher_icons
flutter pub run flutter_launcher_icons after configuration.
Platforms Supported:
- Android (adaptive icons)
- iOS (app icon set)
- Automatically handles all required sizes
Dependency Version Constraints
Constraint Types
| Constraint | Example | Meaning |
|---|---|---|
| Caret (^) | ^1.0.8 | Compatible with 1.x.x (1.0.8 ≤ version < 2.0.0) |
| Exact | 5.0.0 | Exact version only |
| Range | >=1.0.0 <2.0.0 | Specified range |
Version Strategy
- Core packages (flutter, sensors_plus, geolocator): Use caret (^) for flexibility
- Critical packages (screen_state): Use exact version for stability
- AI packages (google_generative_ai): Pinned to 0.4.0 (downgraded from 0.5.0)
Removed Dependencies
activity_recognition_flutter
geolocator + sensors_plus for activity detection
Migration Notes:
- Manual activity classification using speed and accelerometer data
- Custom thresholds for walking/running/vehicle detection
- See lib/main.dart:1633 for ActivityKind enum
Assets Configuration
- Material Design icon set
- App launcher icon source image
Installation
Get All Dependencies
Update Dependencies
Check Outdated
Platform-Specific Setup
Android Permissions
Add toandroid/app/src/main/AndroidManifest.xml:
iOS Permissions
Add toios/Runner/Info.plist:
Troubleshooting
Build Errors
If you encounter build issues:-
Clean build cache:
-
Check Flutter/Dart versions:
-
Update Flutter:
Gemini API Issues
- Verify API key is valid
- Check internet connectivity
- Monitor rate limits (free tier: 60 requests/minute)
- Generate new key at: https://aistudio.google.com/app/apikey