7d111ca202927f89bb3f7cfd09074c4045fdc973
- Remove all shared state variables (unit, theme, GPS data, overlay status) - Keep only local widget state (_errorMessage, _isInBackground, timer) - Replace GPS initialization with context.read<GpsDataManager>().initialize() - Replace overlay show/close/toggle with OverlayProvider methods - Replace theme/unit cycling with SettingsProvider.cycleTheme/Unit() - Remove isOverlayMode parameter (not used, overlay runs in separate isolate) - Wrap build with Selector<SettingsProvider, ColorTheme> for scaffold background - Use Selector<GpsDataManager, double> for speed display (rebuilds only on speed change) - Use Selector<SettingsProvider, String> for unit label (rebuilds only on unit change) - Use Selector<GpsDataManager, (heading, displayHeading)> for compass (rebuilds only on heading change) - Use context.read<> for event handlers (non-rebuilding access) - Simplify dispose() - only cancel background heartbeat timer and disable wakelock - Background heartbeat uses OverlayProvider.pushCurrentData() instead of inline logic - setState remains ONLY for _errorMessage (purely local error UI state) - Remove unused imports (speed_unit.dart, processed_gps_data.dart) - Portrait and landscape layouts both use Provider pattern
GPS Speedometer
A GPS Speedometer aimed at Android on Motorcycle / Bicycle applications. Created with the help of Claude Code
Features
Core Functionality
- Real-time speed display using GPS
- Maybe also direction display using GPS
- Good floating window / split screen support(hopefully)
Customizable Settings
- Speed Units: mph, km/h, knots (with convenient unit selector buttons)
- Theme: Light/Dark mode (expandable for custom themes)
Technical Specifications
- Target Platform: Android (primary)
- Target Device: Mobile phones and tablets
- GPS Requirements: Location permissions required
- Offline Capability: Full functionality without internet
Architecture Design
To be updated
Permissions Required
ACCESS_FINE_LOCATION- For high-precision GPS trackingACCESS_COARSE_LOCATION- Fallback location access
Getting Started
Prerequisites
- Flutter SDK
- Android development environment
- Physical device recommended (GPS simulation limited in emulator)
Installation
- Clone the repository
- Run
flutter pub get - Connect Android device or start emulator
- Run
flutter run
Development
flutter run- Run the app in development modeflutter build apk- Build APK for Androidflutter test- Run unit tests
Releases
1
Release v2.3.0
Latest
Languages
HTML
49.4%
Dart
31.5%
C++
9.6%
CMake
7.5%
Swift
0.9%
Other
1%