NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
ArLocationView is designed to used in areas with large concentration of static POIs
Last release 8 days ago
30 Sep 2026
Ships unpredictably
gaps range from 1 weeks to 1.7 years
Some releases are documented
notes for 14 of 35 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
35 releases · first in 2022
One column per quarter.
ArAnnotation.arPosition.dx is now the label's left edge in screen coordinates (it used to be an offset in pixels relative to the heading, which render
Breaking changes
ArAnnotation.arPosition.dx is now the label's left edge in screen coordinates (it used to be an offset in pixels relative to the heading, which rendered annotations shifted by half a screen).ArSensorManager.pitchHistory field.ArView no longer disposes an ArSensorSource passed through sensorSource: its owner is now responsible for calling dispose().ArSensorManager.arSensor is now a broadcast stream and reports failures as ArSensorException stream errors.ArSensor.compassAccuracy is now an error in degrees on both platforms, or -1 when unknown (Android used to report the raw sensor status, 0–3).ArSensorManager no longer uses the user accelerometer, and the pitch smoothing is now time-based (~0.5 s time constant instead of ~2 s).ArAnnotation.arPosition is now the label's top-left corner in screen coordinates, the label being centered on the POI (dy used to be a pitch offset added to half the screen height, placing the label's top edge on the horizon).ArSensor.heading/pitch are derived from the device attitude on both platforms and the compass event channel payload now carries a rotation matrix.Positioning
ArSensor.rotationMatrix, provided natively on Android and iOS) and a pinhole camera model (ArProjection), instead of a linear degrees-to-pixels mapping on heading and pitch. This accounts for the device roll, removes the heading jump when tilting the device past ±45° on Android, and hides POIs behind the camera.ArCameraInfo.backCameraFieldOfView()), instead of a hard-coded 58°. It can be overridden with cameraFieldOfView on ArView/ArLocationWidget. The preview aspect ratio is taken into account to match the cropped preview.useAltitude to place POIs above/below the horizon from their altitude difference with the user.ArAnnotation.isVisible staying true for annotations moved out of range.ArSensorSources without a rotation matrix keep working: the attitude is rebuilt from heading and pitch (no roll).Stability
AttitudeFilter): compass jitter is damped while the device is still, fast rotations are followed without lag. Without a rotation matrix, the heading is smoothed the same way, across north (HeadingFilter).LocationFilter), so nearby POIs no longer swing with GPS noise. onLocationChange and the reported accuracy use the filtered position.ArSensorManager constructor parameters.previousRows / AnnotationLayoutResult.rows, with AnnotationLayoutConfig.rowHysteresis of clearance required to move back down), and animate row changes (rowAnimationDuration on ArView).hideWithinLocationAccuracy to hide POIs closer than the location accuracy.scaleWithDistance now shrink linearly from 1 down to a configurable minScale (default 0.5) at maxVisibleDistance, instead of the hard-coded 1 - d / (maxVisibleDistance + 280), which went down to ~0.16 and made far labels unreadable. Use minScale: 0.16 to get the previous look back. The scale is computed by the layout and exposed as ArAnnotation.arScale.horizontalSpacing between labels: small far labels are no longer pushed onto extra rows by their unscaled size.AnnotationGeoCache) instead of recomputing them for every annotation on every frame: they are only recomputed when the user or the annotation moves.ArView now projects onto its own size (LayoutBuilder) instead of the screen size, so annotations stay aligned with the camera preview when the view does not fill the screen.maxRows limit. Annotations that do not fit are grouped into the overlapping visible label whose center is closest (AnnotationLayoutResult.groups), which shows a "+N" badge (customizable with groupBadgeBuilder on ArView/ArLocationWidget). The closest POIs stay visible, the farthest ones are grouped.Bug fixes
LowPassFilter.ArSensorSource between several views (Stream has already been listened to, and the first view closing the source used by the others). ArSensorManager.init() is now idempotent.ArSensorManager starting the sensors, and adding events to a closed stream, when disposed while the location permission prompt was open.ArCamera calling setState() after dispose() when the widget was removed during the permission request or camera initialization.ArView showing a spinner forever when the location permission is denied or location services are disabled.BoxFit.cover).ResolutionPreset.high instead of max.maxVisibleDistance being drawn outside the radar disc.[0, 360) instead of [-180, 180]), headingForCameraMode always being 0, heading accuracy being overwritten by the accelerometer's, accelerometer/magnetometer staying on alongside the rotation vector sensor, a listener leaking when the stream was listened to again, and the stream handler not being released on engine detach.headingOrientation from the device orientation (heading was off by ±90° in landscape), and only run CoreMotion while the compass stream is listened to.New
ArSensorException / ArSensorErrorType, and a sensorErrorBuilder on ArView and ArLocationWidget to customize the error shown when location is unavailable.Remove unused ACCESS_BACKGROUND_LOCATION permission from the Android manifest.
ACCESS_BACKGROUND_LOCATION permission from the Android manifest.ArSensorSource interface so sensors can be injected into ArView/ArLocationWidget instead of relying on a hardcoded singleton.AnnotationLayoutEngine, unit tested independently of Flutter widgets.ArView performing side effects (position updates, onLocationChange) during build().ValueKey(annotation.uid).Nothing published for this version
* Update gradle
Nothing published for this version
Nothing published for this version
* Solve scale camera
add permission HIGH_SAMPLING_RATE_SENSORS for android 12
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Solve ArPluginsNotFound for Android
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
* Add radar.
Nothing published for this version
Add permission HIGH_SAMPLING_RATE_SENSORS for Android 12
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
* Add documentation.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
* Resolve bug.
* Filter pitch.
Update example with fake annotation.
* Update example.
* Describe initial release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →