juice_location
Canonical specification for the juice_location companion package
Purpose
Location services with geofencing, background tracking, and geocoding.
Dependencies
External:
- geolocator
Juice Packages:
- juice_connectivity - Check before location requests
Architecture
Bloc: LocationBloc
Lifecycle: Permanent
State
class LocationState extends BlocState {
final Position? currentPosition;
final LocationPermission permissionStatus;
final bool isTracking;
final List<Geofence> activeGeofences;
final List<GeofenceEvent> recentGeofenceEvents;
final LocationError? lastError;
final LocationAccuracy accuracy;
}
Events
RequestPermissionEvent- Request location permissionGetCurrentLocationEvent- One-time location fetchStartTrackingEvent- Start continuous trackingStopTrackingEvent- Stop trackingAddGeofenceEvent- Create geofenceGeocodeAddressEvent- Address to coordinates
Rebuild Groups
location:position- Position updateslocation:permission- Permission changeslocation:geofences- Geofence list changes
Integration Points
StateRelay to:
- juice_analytics - Location events
Open Questions
To be discussed