A Flutter application with advanced mapping and location features using VietMap integration.
- Custom map implementation using VietMap
- Real-time location tracking
- Custom markers with user avatars
- Route drawing and navigation
- Polyline tracking with auto-removal
- Route recalculation when deviating
- Location sharing in groups
- Search locations with autocomplete
- High-accuracy location tracking
- Background location updates
- Distance calculation
- Location permissions handling
- GPS status monitoring
- Firebase integration (Auth, Firestore, Messaging, Crashlytics)
- Multi-language support
- Responsive design
- File upload handling
- API integration with caching
- Socket.IO implementation
- Local notifications
- Custom markers
- Search with debouncing
- Loading indicators
- Snackbar notifications
- Responsive layouts
- Custom buttons and form fields
-
Maps & Location:
- vietmap_flutter_gl
- vietmap_flutter_plugin
- geolocator
- location
-
State Management:
- GetX
- Get It (Dependency Injection)
-
Backend Integration:
- Firebase Core
- Firebase Auth
- Firebase Messaging
- Cloud Firestore
- Socket.IO
-
UI/UX:
- Google Fonts
- Flutter SVG
- Cached Network Image
- Pull to Refresh
- Crystal Navigation Bar
- Animated Snackbar
- GetX pattern for state management
- Service-based architecture
- Repository pattern for data handling
- Base API implementation with error handling
- Custom utilities for responsive design
- MapService: Handles all map-related operations
- GeolocatorService: Manages location tracking
- AuthService: Handles authentication
- NotificationService: Manages push notifications
- Flutter SDK
- Firebase project configuration
- VietMap API key
- Environment file (.env) configuration
- Install Flutter SDK (version ^3.5.1)
- Install Android Studio or VS Code
- Setup your preferred IDE with Flutter and Dart plugins
- A physical device or emulator for testing
bash git clone [repository-url] cd kiwis_flutter
-
Create a
.env
file in the root directory: env VIETMAP_API_KEY=your_vietmap_api_key -
Firebase Setup:
- Create a new Firebase project
- Download
google-services.json
for Android - Download
GoogleService-Info.plist
for iOS - Place these files in their respective directories:
android/app/google-services.json ios/Runner/GoogleService-Info.plist
bash
flutter pub get
bash
cd ios
pod install
cd ..
bash
flutter run
lib/
├── core/ # Core functionality and utilities
├── models/ # Data models
├── services/ # Service classes
├── views/ # UI screens
├── widgets/ # Reusable widgets
└── main.dart # Entry point```