This page provides details about enhancements in the 300.1 release of ArcGIS Maps SDK for Flutter. It also lists deprecations, resolved issues, known issues, and more.

Enhancements

Scenes (3D)

Places and Labels layer in local scenes

The Open 3D Labels layer, a global layer of places and labels available in light and dark variants, now displays labels in ArcGISLocalSceneView. As a result, 3D basemaps that include the Places and Labels layer now render labels in ArcGISLocalSceneView as well. This complements existing support for the global Buildings and Trees layers and allows the full contents of Esri 3D basemaps to be rendered.

The ArcGISLocalSceneView now supports rendering of Raster Tile Layers that have been authored with BlendModes in a WebScene. Blend modes are used to blend layers together to create creative and compelling scenes or to highlight specific patterns in data. There is currently no API to control or change blending type, and GroupLayers are ignored when determining how layers are blended.

3D Tiles in local scenes

3D Tiles layers are now supported in the ArcGISLocalSceneView, extending 3D Tiles visualization from global scenes to local scenes, which provide support for visualizing data in a wide variety of projected coordinate systems. The addition of 3D Tiles enables integration of additional sources of 3D textured mesh data, such as Google Photorealistic 3D Tiles. Additionally, 3D Tiles layers now include dynamic attribution which is determined for the current viewpoint and aggregated into a single string and accessed via the GeoViewController‘s attributionText property. The dynamic attribution is visible by default within the built-in attribution bar in the ArcGISSceneView and ArcGISLocalSceneView UI controls. If using Google Photorealistic 3D Tiles, follow Google’s requirements for applications developed with Google’s Map Tiles API.

Local scene view with OGC 3D Tiles

Accessibility-aware label text scaling enabled by default

Label text generated from LabelDefinition classes on layers in the operational layers collection now scales with the device’s accessibility text-size settings by default. This capability can display larger labels than in previous releases, improve label legibility for users who increase system text size, and keep labels more consistent with the rest of the application’s user interface. To preserve the previous behavior and keep label text at a fixed size regardless of accessibility settings, set useSystemTextScale to false on ArcGISSceneView or ArcGISLocalSceneView.

Analysis API

Analysis API enhancements

This release builds on the high-performance analysis APIs released in 300.0 with the following capabilities:

  • Additional map algebra functions to expand mathematical operations in analysis workflows, including trigonometric and exponential functions, as well as functions such as clamp and remainder. See the Map algebra topic for more information.
  • Slope and aspect functions to calculate terrain steepness and slope direction.

Animated scene showing slope and aspect analysis results

  • Analysis APIs now support processing datasets larger than 2 GB by breaking processing into smaller GPU-queued areas before reassembling them into a single result file.

Symbology

New DictionarySymbolStyle property

DictionarySymbolStyle now exposes a new property uiSchemaJson. This UI Schema JSON, if present in the Esri published dictionaries or webstyles, provides a set of rules and domains that could be used to build a user experience for browsing and building symbols from the dictionary style.

Military symbology updates

Some control measure line symbols include elements whose appearance is determined by a measurement attribute as specified by the standard. With this release, these symbols can now be rendered dynamically, reflecting the values from their associated measurement attributes. For example, air corridor symbols will use the attribute mapped to the new width symbol property to determine the real-world distance between the parallel corridor lines. The model configuration property must be set to ordered anchor points. This feature is only supported in static rendering mode when working in 3D. For more information on the latest updates to the Military Symbology Dictionary Styles, see the Military symbology styles change log.

Utility Network

Enhanced shared template workflows

Shared templates now provide a more consistent editing experience across connected and disconnected workflows, with improvements for offline support, geometry builders, transactions, and performance.

Shared templates can now be included when generating a sync-enabled mobile geodatabase. SyncCapabilities.supportsSharedTemplates indicates whether a feature service supports shared template download. If it does, createDefaultGenerateGeodatabaseParameters() automatically enables GenerateGeodatabaseParameters.syncSharedTemplates, allowing field applications to provide the same guided feature creation experience online and offline.

Template-driven feature creation has been expanded. SharedTemplateSource.createFeatures() now supports radialLines, allowing one template to generate multiple connected features from a common origin. This is useful for utility network workflows, such as creating multiple service connections from a transformer or distribution junction.

Geometry builder tools also preserve true-curve geometries when creating offsets, buffers, and intervals. This ensures that assets generated along curved roads, pipelines, water mains, and other infrastructure retain their intended shape.

FeatureTemplateRelationship.numberOfRelatedFeatures indicates how many related records a template can create. Applications can use this value to more accurately communicate editing results when a single operation creates a feature and additional inspection, maintenance, or asset records.

Shared template performance has been improved through optimized caching of template definitions. This reduces service queries and processing overhead for complex group and preset templates, resulting in faster template loading and a more responsive editing experience.

Named utility trace functions

Named utility network trace functions authored in ArcGIS Pro 3.7 and ArcGIS Enterprise 12.1 or later are supported through new UtilityTraceFunction constructors and the functionName property.

Named trace functions help applications distinguish outputs when multiple calculations use the same network attribute and operation with different criteria. For example, a trace can calculate separate load totals for residential and commercial customers using conditional aggregations on the same attribute. By exposing the author-defined function name, applications can identify, label, organize, and display trace results without extra inference logic.

Utility Network schema version 8

Utility Network schema version 8 is now supported for non-telecom networks authored in ArcGIS Pro 3.7 and ArcGIS Enterprise 12.1 or later.

You can continue to work with schema version 8 datasets for tracing, rule-based editing, association management, topology validation, and offline workflows, including generating and synchronizing mobile geodatabases. This provides compatibility with utility networks created using the latest ArcGIS Utility Network releases. Applications for electric, gas, water, and sewer workflows can keep using current APIs and workflows without modification. Telecom utility network datasets are not supported in this release.

Multi-user branch version workflows with ServiceGeodatabase

ArcGIS Maps SDKs for Native Apps introduce ServiceGeodatabase.refresh() for applications that work with named branch versions in ArcGIS Enterprise 12.0 and later.

This API supports long-lived workflows that use a ServiceGeodatabase configured with persistent. The SDK manages version sessions and moments while supporting ArcGIS Enterprise’s multiple-reader, single-writer branch-version concurrency model. For background, see Version locking models. For example, applications can keep a map open on a shared named version while other users review, edit, reconcile, and post changes. The SDK maintains a consistent moment for queries and analysis so feature queries, utility network traces, and association queries run against a consistent state of the version.

The SDK automatically advances the client moment to the latest edit moment after local add, update, and delete operations, ServiceGeodatabase.applyEdits(), or utility network operations such as UtilityNetwork.validateNetworkTopology().

When applications are ready to incorporate edits committed by other users, they can call refresh(). This advances the client moment to the latest server edit moment, refreshes affected layers, and redraws displayed features without recreating the ServiceGeodatabase or manually managing version moments.

Geodatabase

Sync attachment keywords

When working with a feature service through the Native Maps SDKs, SyncCapabilities.supportsAttachmentKeywords reports whether the service supports syncing attachment keywords. If supported by the service, GenerateGeodatabaseParameters.syncAttachmentKeywords defaults to true when you manually take feature data or a map offline, so attachment keywords are included. When taking a web map offline with offline settings customized in Portal, the value configured in the portal is used.

Map view

Changing view insets

Normally, changing ArcGISMapViewController.contentInsets does not change the rendered map area, since the map is not locked to a specific Viewpoint. To keep the current viewpoint when insets change due to the resizing of UI elements, set the new ArcGISMapViewController.insetsViewpointAdjustment property to InsetsViewpointAdjustmentType.preserveCenter. This property has no effect when LocationDisplay is active and LocationDisplayAutoPanMode is set to anything other than off.

Accessibility-aware label text scaling enabled by default

Label text generated from LabelDefinition classes on layers in the operational layers collection now scales with the device’s accessibility text-size settings by default. This capability can display larger labels than in previous releases, improve label legibility for users who increase system text size, and keep labels more consistent with the rest of the application’s user interface. To preserve the previous behavior and keep label text at a fixed size regardless of accessibility settings, set useSystemTextScale to false on ArcGISMapView.

Layer

Enhanced VectorTiledLayer

Several ArcGISVectorTiledLayer enhancements have been added including:

  • Improved ArcGISVectorTiledLayer for better rendering performance, with layer load times reduced by up to 25% and memory usage reduced by up to 20%.

  • ArcGISMapView now supports identify on vector tiled layers that include feature IDs. Identify operations return an IdentifyLayerResult for each matching vector tiled layer, with VectorTileFeature results that include attributes and the associated VectorTileStyleLayerType. Geometry is returned only for point-based features, such as circle and symbol styles.

  • You can author vector tiled layers to have feature IDs by retaining relevant attributes when publishing from ArcGIS Pro. While authoring ArcGISVectorTiledLayer content with feature IDs, include only required attributes. Including too many attributes can increase tile size and negatively affect rendering performance and memory usage.

Vector Tiled Layer Identify

Raster

Build and manage raster pyramids

You can now inspect, build, and delete pyramid overviews for file-based Rasters using the RasterPyramids class. Pyramid overviews are typically created to improve performance for rasters that can take longer to display due to being large in size or highly compressed. Use the pyramidInfo property to access relevant information that can be determined about existing pyramids on the Raster, such as the number of pyramid levels, compression method, resampling method, and the file path to an external pyramid file. The deletePyramids() method will delete pyramid overviews stored in an external .ovr file; it will not delete pyramids embedded in the source raster file. The buildPyramids() method will start an operation that builds pyramid overviews in an external .ovr file, which can be monitored for progress or cancelled. Parameters can optionally be set to define the number of levels, the resampling method, and the compression method used.

New close method to release native resources

The close() method has been added to Raster to provide deterministic release of native resources, such as file handles, associated with file-based rasters. This is especially important in garbage-collected environments, which do not provide deterministic destructors and cannot guarantee timely resource cleanup. Call close() on a Raster when it is no longer in use.

Offline maps

Geospatial PDFs and raster files

In addition to tile packages and vector tile packages, you can now specify a georeferenced PDF or any supported raster file when using a locally referenced basemap in an offline map. The referenceBasemapFilename property can be set in the OfflineSettings of a web map or when configuring offline map parameters in an OfflineMapTask.

Editing

Track previewed geometry changes during edit interactions

You can now subscribe to the new onInteractionPreviewChanged event on the GeometryEditor receive’s updates about the state of the geometry during an ongoing edit interaction, for example during a vertex creation or move, or when moving, scaling, or rotating a geometry or part.

The GeometryEditorInteractionPreview event parameter provides access to the preview geometry, which represents the geometry that would be created if the ongoing interaction were completed. It also includes the interaction element, which identifies the element being edited, and the interaction type, which indicates the type of interaction.

This event allows you to provide real-time feedback as users edit geometries. For example, you can show alerts or update symbology when the preview geometry meets criteria such as exceeding a maximum area or length. Alternatively, if using the ProgrammaticReticleTool, you can use the information provided by this event to enable and disable controls for vertex placement depending on whether or not the previewed geometry intersects the geometry of an existing feature.

interactionPreviewChanged-geometryeditor-relnotes300-1

Popups

Alternative text for popup media

You can now access the alternative text for popup media with the new PopupMedia.alternativeText property.

Arcade

Support for new Arcade version

The Flutter Maps SDK now offers partial support for Arcade 1.36 and Arcade 1.37.

Updated functions

GetKeys, GetValues, Count now accept Pixel and Voxel types.

The zero-argument Portal overload is not supported and returns null.

GetEnvironment updates are not supported:

  • activePortal is set to null
  • availablePortals is set to an empty Array

New constants

Support for NaN has been added.

New profile

Support for the Form Attachment Filename Calculation has been added.

Point cloud layer

Customizations

Point cloud layers are now supported in ArcGISLocalSceneView, extending point cloud visualization from global scenes to local scenes.

You can now customize how a PointCloudLayer is displayed using renderers and filters. Use a PointCloudClassBreaksRenderer, PointCloudRgbRenderer, PointCloudStretchRenderer, or PointCloudUniqueValueRenderer to symbolize points using point cloud layer attributes. You can also control point size and modulate point colors to emphasize patterns in the data.

Use a PointCloudValueFilter, PointCloudReturnFilter, or PointCloudBitfieldFilter to show points that match attribute values, LiDAR return types, or bit flags. Combining renderers and filters helps you distinguish and focus on features such as buildings, vegetation, and ground surfaces in a point cloud.

PointCloudLayer renderers and filters are only supported in ArcGISLocalSceneView.

Point cloud visualization changing as renderers and filters are applied

Projection engine

GDAL support

There are no updates to the coordinate systems and transformations tables, or to the grid transformation files in the Projection Engine Data download in this release. However, the Projection Engine Data download has been updated with the latest GDAL support files. If your app works with raster data, including for display or analysis, you should download and reference the GDAL support files from the latest Projection Engine Data download. You must reference GDAL support files from the download that matches your version of ArcGIS Maps SDK for Flutter. For details, see GDAL support files in the Spatial references topic.

SDK enhancements

New APIs

This release of ArcGIS Maps SDK for Flutter exposes the following additional APIs:

Support for Swift Package Manager

We updated the Flutter Maps SDK package to build for iOS with Swift Package Manager (SPM) instead of CocoaPods.

Learn more in our updated Install and set up guide and in the Flutter guide for Swift Package Manager for app developers.

Breaking API changes

There are no breaking changes for this release.

Behavior changes

  • When loaded, an ArcGISSceneLayer that contains labels now has ArcGISSceneLayer.labelsEnabled set to true by default.
  • UtilityNetwork.canAddAssociation() now restricts point features to a single containment association, consistent with ArcGIS Pro.
  • ServiceGeodatabase.applyEdits() and ServiceFeatureTable.applyEdits() now omit unchanged null attribute values and unchanged geometry from calls to FeatureTable.updateFeature(). This helps prevent unintended data loss in collaborative editing workflows and reduces update payload sizes.
  • Editing a sync-enabled mobile geodatabase that contains utility network source tables now requires the Advanced Editing user type extension, even when editing related or stand-alone non-utility network tables. Developers should ensure appropriate licensing for offline editing workflows that include utility network source data.
  • SharedTemplateSource.addFeatures() now applies shared template edits as a single transaction. If the operation fails, all changes are rolled back.
  • SharedTemplate can now be loaded and used without obtaining references to all tables referenced by the template, simplifying initialization and reducing setup complexity.
  • The Projection Engine Data download contains updated GDAL support files. You must reference GDAL support files from the download that matches your version of ArcGIS Maps SDK for Flutter. See the Projection engine section and see GDAL support files in the Spatial references topic for more details.
  • Starting with this release, SurfacePlacement set to relative uses the elevation from integrated mesh content. This applies when a ArcGISScene contains an IntegratedMeshLayer or an Ogc3DTilesLayer configured as an integrated mesh.
  • Geometry Z values are treated as offsets from the mesh elevation. A Z value of 0 places the geometry directly on the mesh surface. Positive Z values position the geometry above the mesh, while negative Z values position it below the mesh by the corresponding offset.

Deprecations

API deprecations

There are no API deprecations.

OS and framework deprecations

Support for Android 9 (API 28) is deprecated. 300.1 is the last release that supports Android 9. Android 10 (API 29) will be the minimum supported version in the next release.

Issues resolved

  • True curves are not supported in scene view using dynamic rendering mode.
  • Labels for features removed by a display filter are not correctly removed from the map.
  • BUG-000178816, BUG-000182448, BUG-000184569, BUG-000185067, BUG-000185126, BUG-000185503 - ArcGISFeatureTable fails to load with an "Arcade expression requires a later version of Runtime" error.
  • BUG-000183130 - SubtypeFeatureLayer does not honor FeatureLayer.scaleSymbols when enabled by Map.referenceScale.
  • BUG-000184045 - SubtypeFeatureLayer does not evaluate the FeatureSetByID() Arcade function.
  • The maximum size of raster data used to populate a ContinuousField, DiscreteField, or BooleanField is 2 GB, which is equivalent to 23170 x 23170 pixels.
  • BUG-000185647 - Version 300.x crashes when adding certain feature layers with dynamic rendering mode

Known issues

  • The slope and aspect functions require input data in a shape-preserving (conformal) projected coordinate system, and the data’s vertical (elevation) units must match the horizontal units of that coordinate system.
  • ViewshedFunction is supported only with ContinuousField in a projected coordinate system. Geographic coordinate systems such as WGS84 are not supported in this release.
  • A FieldAnalysis can be displayed in ArcGISMapView or ArcGISSceneView only when the result spatial reference matches the view.
  • Raster data with 64-bit float or integer-based pixels is not supported.
  • Raster data with u32 integer-based pixels is supported only when values are within an i32 range. u32 values outside an i32 range are not supported.
  • The maximum size of a ContinuousField, DiscreteField, or BooleanField used in a FieldAnalysis is 1 GB, which is equivalent to 16384 x 16384 pixels.

Sample updates

Toolkit updates

New component

Basemap Gallery: A widget that displays a collection of basemaps, either from ArcGIS Online, a user-defined portal, or an array of custom basemap gallery items.

Enhancement to PopupView

alternativeText: If a PopupMedia has an image that can’t be loaded, alternativeText is displayed, if present.