Tracelet Doctor

License Pub Package tracelet Pub

Drop-in diagnostic overlay for Tracelet β€” visualize permissions, OEM health, battery state, sensors, and tracking status in a single tap.

Screenshot

The Doctor shows a premium dark-themed bottom sheet with:

  • ⚠️ Warnings β€” actionable issues (permission denied, power save, aggressive OEM, mock GPS, etc.)
  • πŸ›‘οΈ Permissions β€” location, motion activity, accuracy authorization
  • πŸ“ Tracking State β€” enabled/disabled, mode, motion, odometer, scheduler
  • πŸ”‹ Battery & OEM β€” power save, battery optimization, manufacturer, aggression rating meter
  • πŸ“‘ Sensors β€” accelerometer, gyroscope, magnetometer, significant-motion
  • πŸ’Ύ Database & Device β€” pending location count, mock detection, platform, OS version

Quick Start

dependencies:
  tracelet: ^2.0.6
  tracelet_doctor: ^1.0.1
import 'package:tracelet_doctor/tracelet_doctor.dart';

// Show the diagnostic sheet:
TraceletDoctor.show(context);

That's it β€” one line. No setup, no configuration.

Features

  • Zero native code β€” pure Dart/Flutter widget
  • One-line integration β€” TraceletDoctor.show(context)
  • Dark glassmorphic theme β€” premium aesthetic with semantic status colors
  • 12 warning types β€” automatically computed from device state
  • Copy to clipboard β€” export the full diagnostic JSON for sharing
  • Re-run β€” refresh diagnostics without dismissing the sheet
  • Loading state β€” animated pulse indicator while gathering data
  • Error handling β€” graceful retry on platform call failures

How It Works

The Doctor calls Tracelet.getHealth() internally, which fires 10 parallel platform calls:

  1. getState() β€” tracking enabled, mode, motion, odometer
  2. getProviderState() β€” location services, GPS, network, accuracy
  3. getSettingsHealth() β€” OEM manufacturer, aggression rating
  4. getSensors() β€” accelerometer, gyroscope, magnetometer, sig-motion
  5. getDeviceInfo() β€” platform, OS version
  6. isPowerSaveMode() β€” battery saver active
  7. isIgnoringBatteryOptimizations() β€” app exemption status
  8. getPermissionStatus() β€” location authorization
  9. getMotionPermissionStatus() β€” motion/activity recognition
  10. getCount() β€” pending locations in the database

All results are aggregated into a typed HealthCheck object with automatically computed warnings.

Architecture

This is a separate, optional package in the Tracelet monorepo:

Package Description
tracelet Core SDK β€” the only package apps depend on (pub.flutter-io.cn)
tracelet_doctor (this package) Diagnostic overlay widget
tracelet_platform_interface Abstract platform interface
tracelet_android Kotlin Android implementation
tracelet_ios Swift iOS implementation
tracelet_web Web implementation

License

Apache 2.0 β€” see LICENSE for details.

Libraries

tracelet_doctor
Drop-in diagnostic overlay widget for Tracelet.