Install
A bridge, not a port. Every decision happens in the native SDKs.
The Kalman filter, the acceptance pipeline, the motion state machine, stop consolidation, spline smoothing and arrow placement all happen natively. This package moves values across a platform channel and gives them Dart types. It reimplements nothing.
Background tracking, including app-killed tracking, is 100% native: Android uses the SDK's own foreground service, boot receiver and watchdog workers; iOS uses CLBackgroundActivitySession, significant-location-change relaunch and a BGTaskScheduler backstop. Dart never needs to be running for capture to continue.
dependencies:
trackit_flutter:
path: ../trackit-flutter
Android requirements
These are inherited from the SDK's AARs, not chosen by the plugin.
- minSdk 26 - otherwise manifest merge fails naming trackit-core
- compileSdk 37 - otherwise checkDebugAarMetadata reports "requires minCompileSdk 37"
- Kotlin 2.4.x and JDK 17
- A JitPack read token
- SDK v0.1.1-alpha03 or later, or getGeofences and getCurrentLocation fail as NOT_IMPLEMENTED_ON_PLATFORM
iOS requirements
iOS 17.0 - the SDK's floor, for @Observable state, CLBackgroundActivitySession and Swift 6 binaries with library evolution. Set it in the Podfile, in the post_install block, and on the Runner target itself; Flutter templates default to 13.0 and the build then fails on the module's minimum deployment target.