Mikkeli Matlock 7d111ca202 feat(02-02): migrate SpeedometerScreen from setState to Provider
- 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
2026-02-10 22:18:34 +09:00

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 tracking
  • ACCESS_COARSE_LOCATION - Fallback location access

Getting Started

Prerequisites

  • Flutter SDK
  • Android development environment
  • Physical device recommended (GPS simulation limited in emulator)

Installation

  1. Clone the repository
  2. Run flutter pub get
  3. Connect Android device or start emulator
  4. Run flutter run

Development

  • flutter run - Run the app in development mode
  • flutter build apk - Build APK for Android
  • flutter test - Run unit tests
S
Description
Simple GPS speedometer.
Readme MIT 1.3 MiB
2026-08-27 11:54:50 +00:00
Languages
HTML 49.4%
Dart 31.5%
C++ 9.6%
CMake 7.5%
Swift 0.9%
Other 1%