Mikkeli Matlock cc11a3d31a feat(03-02): add staleness detection to overlay screen and error surfacing to SpeedometerScreen
Overlay screen staleness:
- Add _lastUpdateTime field to track GPS data freshness
- Add _stalenessCheckTimer for periodic staleness monitoring (1s interval)
- Update _lastUpdateTime from message.timestamp in _listenToMainAppMessages
- Start staleness monitoring in initState, cancel in dispose
- Calculate staleness opacity in build() (0.5 alpha after 3s)
- Apply staleness dimming to speed text, unit text, heading icon, and heading text
- Show "--" for speed after 10s of no data (setState in timer callback)
- Immediate snap-back when fresh data arrives (no AnimatedOpacity)

SpeedometerScreen error surfacing:
- Import permission_handler for openAppSettings
- Register error callback on OverlayProvider in initState postFrameCallback
- Implement _handleOverlayError to show snackbars for overlay errors
- Permission error: snackbar with "Settings" action button that opens app settings
- Creation failure: snackbar with error message (no action button)
- Communication degraded: snackbar with error message (no action button)
- Clean up error callback in dispose (try-catch for disposed provider)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 19:24:05 +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%