This page provides details about enhancements in the 200.8 release of ArcGIS Maps SDK for Flutter. It also lists deprecations, resolved issues, known issues, and more.
Enhancements
Geometry editing
Customizable geometry editing workflows using the programmatic reticle tool
You can now configure your GeometryEditor
to use the new ProgrammaticReticleTool
to facilitate customized geometry editing workflows such as those using buttons rather than tap interactions. Unlike our existing tools the ProgrammaticReticleTool
has no built in touch interaction. Instead, it is driven by programmatic operations allowing you to configure your own behavior and interaction using buttons or other triggers of your choosing.
Use ProgrammaticReticleTool.selectElementAtReticle()
and ProgrammaticReticleTool.pickUpSelectedElement()
to select and pick up the GeometryEditorVertex
or GeometryEditorMidVertex
at the reticle position. Then, drop a picked-up vertex or insert a new vertex using ProgrammaticReticleTool.placeElementAtReticle()
.
The ProgrammaticReticleTool.vertexCreationPreviewEnabled
property can be used to enable or disable the appearance of vertex feedback and feedback lines that are drawn underneath the reticle. It can also be used to enable or disable both visual and haptic snap feedback. This is useful when implementing workflows that do not allow for vertex creation.
Hovered and picked up element changed events
The GeometryEditor.onHoveredElementChanged
and GeometryEditor.onPickedUpElementChanged
events can be used in your app to react to state changes in the GeometryEditor
, and are especially useful when working with the new ProgrammaticReticleTool
.
For example, when GeometryEditor.onHoveredElementChanged
occurs, based on the GeometryEditor.hoveredElement
, your app UI can display a button that selects and picks up the element currently underneath the reticle, as shown below. Similarly, when GeometryEditor.onPickedUpElementChanged
occurs, your app UI can display a button that drops the GeometryEditor.pickedUpElement
or places a new vertex, using ProgrammaticReticleTool.placeElementAtReticle()
. You can check the GeometryEditor.pickedUpElement
to indicate to the user whether or not they will be inserting a new vertex or dropping a currently picked up element.

Disable grow effect when hovering over geometry editor elements
Use the new GeometryEditorStyle.growEffect
to enable and disable the visual effect of vertices and mid-vertices growing when hovered.
Vertices and mid-vertices can be separately configured using GeometryEditorGrowEffect.applyToVertices
and GeometryEditorEffect.applyToMidVertices
.
Identify geometry editor elements
Use the ArcGISMapViewController.identifyGeometryEditor()
method to identify elements at a given position when using the GeometryEditor
. This allows you to implement workflows such as selecting geometry editor elements or updating the viewpoint to be centered at that element on a long press.

Customizable precision with tolerance and resolution
Use the new SpatialReferenceBuilder
to create new SpatialReference
objects with custom tolerance and resolution values for high accuracy workflows and GeometryEngine
.
The SpatialReference
class exposes new read-only properties for SpatialReference.tolerance
, SpatialReference.verticalTolerance
, SpatialReference.resolution
, and SpatialReference.verticalResolution
.
This resolves the following enhancement request: EN
.
Authentication
Enhancement to ArcGISAuthenticationChallenge
ArcGISAuthenticationChallenge
now provides an enum to determine the type of authentication challenge Iap, OAuthOrToken, or Token. It helps to determine whether the authentication challenge is issued by the proxy, portal, or service.
Query and identify optimizations
ArcGISFeature access optimization
Accessing ArcGISFeature
s by performing query operations on a ServiceFeatureTable
, as well as through the identify methods with FeatureLayer
s, has seen a significant boost in performance. This improvement is particularly evident when working with a map or scene that contains a large feature dataset, as these asynchronous operations now return results more efficiently, even while all features are still being rendered.
Layers
PDF Support
PDF files are now a supported raster file format, including GeoPDF(R) and geospatial PDFs using the ISO encoding. They can now be directly added to maps or scenes as raster layers or basemaps without the need to first convert them to another format. The first page of a PDF will be read and georeferenced according to optional embedded spatial reference information, and at a default DPI of 300.
Arcade
Support for new Arcade version
The SDK now supports Arcade 1.33
- Geotrigger notification profile now supports
$
.Fence Layer Translate
function is not yet supported and will be supported in a future release.Text
Projection Engine
Geographic (datum) transformations
- Added geographic (datum) transformation method Molodensky-Badekas (Position Vector). The existing Molodensky-Badekas method uses the Coordinate Frame version of the rotation matrix.
- Added geographic (datum) transformation method NTv2_Velocity. Although the method is designed to support datum anchor epochs and data epochs, only frame epochs of the geographic coordinate systems are currently supported for interframe conversions such as between NAD83(CSRS)v2 and NAD83(CSRS)v8.
SDK enhancements
Additional APIs exposed since 200.7
- 3D:
- Scene view and camera controllers.
- 3D layers types.
- 3D symbology.
- 3D analysis including line of sight and viewshed operations.
- Network Authentication:
- Support for Public Key Infrastructure (PKI), Integrated Windows Authentication (IWA) and server trust workflows.
- For full details of support, see the Security and authentication guide doc.
- Pop-up
First release of ArcGIS Maps SDK for Flutter Toolkit
- Ready-made widgets to simplify development with ArcGIS Maps SDK for Flutter.
- Initial components:
Enhancements to existing API
- Pinch to zoom gesture: a threshold has been added to prevent accidental rotation while zooming. This makes the gesture more reliable. In addition to this, a new property has been added:
InteractionOptions.rotateDuringZoomEnabled
. This istrue
by default, but can be set tofalse
to prevent rotation during a pinch zoom gesture. - Exposed additional list operations,
insert
,All remove
,Range remove
, andWhere retain
, on classes that use Dart'sWhere List
interface.
Breaking API changes
There are no breaking API changes with this release.
Behavior changes
- With this release,
GeometryEngine.reshape()
now supports true curves. - With ArcGIS Online now supporting true curves, you can now apply edits to circular arcs in an ArcGIS Online hosted feature service.
- The
wkt2
string description of aSpatialReference
is now read in preference overwkt
forFeatureLayer
s andGeodatabase
s and is also contained in theirSpatial Reference
output json. JSON
method now serializes properties from theSerializable.to JSO N() unknown
collection.JSON - This is the last release where creating an
IntegratedMeshLayer
using theArcGISSceneLayer
constructor workflow is supported. Starting from next release, it is recommended that you use theIntegrated
constructor to create a layer of that type.Mesh Layer
Deprecations
API deprecations
-
The
FeatureSubtype.domains
property is deprecated and will be removed in a future release. Use theField.domain
in theFeatureSubtype.fieldOverrides
instead. -
Integrated
enum value is deprecated fromMesh SceneLayerDataType
. -
OpenStreetMap (OSM) basemaps are in mature support and will no longer be updated. They will be removed in a future version of the ArcGIS Maps SDK for Flutter. For more information, see the Overture Maps Data in ArcGIS blog. We recommend that you replace your OSM
BasemapStyle
with the equivalent Open Basemap styles, as follows:OSM Basemap style Open Basemap style OSMStandard openOSMStyle OSMStandardRelief openOSMStyleRelief OSMStandardReliefBase openOSMStyleReliefBase OSMStreets openStreets OSMStreetsRelief openStreetsRelief OSMLightGray openLightGray OSMLightGrayBase openLightGrayBase OSMLightGrayLabels openLightGrayLabels OSMDarkGray openDarkGray OSMDarkGrayBase openDarkGrayBase OSMDarkGrayLabels openDarkGrayLabels OSMStreetsReliefBase openStreetsReliefBase OSMBlueprint openBlueprint OSMHybrid openHybrid OSMHybridDetail openHybridDetail OSMNavigation openNavigation OSMNavigationDark openNavigationDark
OS and framework deprecations
There are no OS or framework deprecations with this release.
Issues resolved
Issues addressed in this release are listed below.
- Unable to evaluate
Feature
Arcade function referencing aSet By Name() SubtypeFeatureLayer
in pop-ups. - The
ServiceFeatureTable.undoLocalEdits()
andServiceGeodatabase.undoLocalEdits()
methods fail to revert the addition of features in a change-tracked non-spatial table.
Layer
s configured with custom dictionaries do not display on the map when parsing dictionary version in a web style.- BUG-000174246 - When drawing a graphic line with static rendering mode, unnecessary graphics are drawn along with the graphic line in a 3D
ArcGISSceneView
.
- Issue reported on Esri Community: Creating features with non-int64 integer types leads to
ArcGIS
when adding to a feature table with fields defined asException : code=3002; Geodatabase data type mismatch Int16
(Field.short
) orInt Int32
(Field.long
). Note that Dart only natively supportsInt Int64
, so while this issue has been addressed such that values can be passed to different integer fields in a geodatabase, Dart will truncate any invalid values and so data integrity and validation should be handled at application and/or service level.
Known issues
Known issues or limitations for this release are listed below.
-
Currently feature reduction (or clustering) is only supported by displaying clusters as configured in a web map, as well as the ability to toggle on/off. Exposing the ability to create
FeatureReduction
and set to aFeatureLayer
orGraphicsOverlay
is part of the Flutter parity work. This means that currently theFeatureLayer.featureReduction
andGraphicsOverlay.featureReduction
setters are not yet in a usable state. This will be addressed in a subsequent release. -
Passing local file paths to
Model
andScene Symbol.with Uri() Image
constructors do not work due to a parsing exception. Instead of using, as an example,Frame.with Uri() Image
, use theFrame.with Uri(uri) Uri
constructor to strip out everything except the path to pass a cleanUri
to the constructor as such:Image
.Frame.with Uri( Uri(path : uri.path));
Changes in samples
New Samples
- Add integrated mesh layer
- Add point cloud layer from file
- Add point scene layer
- Display web scene from portal item
- Animate 3D graphic
- Change camera controller
- Display scene
- Display scene from mobile scene package
- Edit geometries with programmatic reticle tool
- Filter features in scene
- Match viewpoint of geo views
- Set surface navigation constraint
- Show extruded features
- Show line of sight between points
- Show realistic light and shadows
- Show viewshed from geoelement in scene
- Show viewshed from point in scene
- Style point with scene symbol
- Select features in scene layer
Enhancements
- Show grid and Group layers together samples enhanced to include 3D support.