locus 1.1.0
locus: ^1.1.0 copied to clipboard
Background geolocation SDK for Flutter. Native tracking, geofencing, activity recognition, and sync.
Changelog #
All notable changes to this project will be documented in this file.
1.1.0 - 2026-01-01 #
Added #
- Testability: Refactored
Locusto support mocking viasetMockInstance(), enabling robust unit testing for apps using the SDK. - Structured Logging: Replaced flat-file logging with SQLite-based structured logs on Android and iOS. Added
Locus.getLog()returningList<LogEntry>. - Authentication Handling: Implemented smart 401 Unauthorized handling. Sync pauses automatically on 401; use
Locus.resumeSync()after token refresh. - Permissions Workflow: Added
PermissionAssistantto manage complex permission sequences (Location, Activity, Notification) with UI callbacks. - Device Optimization: Added
DeviceOptimizationServiceto detect OEM battery restrictions and guide users to "Don't Kill My App" instructions (Android). - Configuration Presets: Added
Config.fitness()andConfig.passive()factory constructors for quick setup. - iOS Data Persistence: New
SQLiteStorageengine for iOS, providing high-performance persistent storage (replacingUserDefaults). - Custom Sync Body Builder: Added
Locus.setSyncBodyBuilder()to allow full control over HTTP request body structure. Ideal for backends requiring custom JSON envelopes (e.g.,{ ownerId, taskId, polygons: [...] }). - Headless Sync Body Builder: Added
Locus.registerHeadlessSyncBodyBuilder()for background sync with custom body formats, even when the app is terminated. - Native Sync Envelope Support: The
extrasconfig field is now merged at the top level of HTTP sync bodies on both Android and iOS. Combined withhttpRootProperty, this enables custom JSON structures without Dart callbacks. - Developer Experience (DX) Improvements:
- Added
locus_errors.dartwith descriptive exception types (NotInitializedException,SyncUrlNotConfiguredException,HeadlessRegistrationException, etc.). - Headless registration now prints detailed instructions when callback handles fail.
- Native sync adds debug logs explaining why sync was skipped (no URL, paused, etc.).
- Config validator now warns about common issues:
extraswithouthttpRootProperty,autoSyncwithoutbatchSync,enableHeadlesswithoutstopOnTerminate: false.
- Added
- Centralized
LocusConstantsfor all SDK parameters. - Proper
toString()implementations for core models.
Fixed #
- iOS Storage: Migrated storage to SQLite to resolve data truncation issues.
- Platform Parity: Implemented confidence threshold filtering for motion activity on iOS.
- Error Handling: Standardized error responses across platforms.
- Lifecycle Management: Fixed iOS
SyncManagerlifecycle issues. - Test Stability: Resolved unit and integration test flakiness.
Changed #
- Refactored
StorageManagerto utilize the new SQLite backend. - Simplified internal method channel handlers.
- Updated native battery stats to include detailed drain estimates.