NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #425 most downloaded on pub.dev
Flutter's №1 non-commercially aimed map client: it's easy-to-use, versatile, vendor-free, fully cross-platform, and 100% pure-Flutter
Last release 1 months ago
02 Sep 2026
Release timing varies
gaps range from 1 weeks to 7 months
Some releases are documented
notes for 27 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
9 years old
100 releases · first in 2018
chore(deps): bump actions/stale from 10 to 11 by @dependabot [bot] in #2238
Markers by @LeonTenorio in #2106RangeError in Proj4Crs.scale/zoom for out-of-range values by @AlexLaroche in #2209Full Changelog: v8.3.2...v8.4.0-dev.1
One column per quarter.
Contains the following user-affecting changes:
Markers - #2106Contains the following user-affecting bug fixes:
Many thanks to these contributors (in no particular order):
fix: prevent NaN fling direction when tracked pointer offsets are zero by @nisenbeck in #2220
initialCameraFit on a zero-sized camera by @nisenbeck in #2223Full Changelog: v8.3.1...v8.3.2
Contains the following user-affecting bug fixes:
initialCameraFit on a zero-sized camera - #2223 for #2222Many thanks to these contributors (in no particular order):
chore: allow 'pkg:latlong2' v0.10.x dependency by @ThexXTURBOXx in #2207
MarkerLayer by @ben-milanko in #2213PolygonLayer offset generation & triangulation by @ben-milanko in #2211LatLng is non-finite by @JaffaKetchup in #2218Full Changelog: v8.3.0...v8.3.1
Contains the following user-affecting bug fixes:
Markers with NaN coordinates provided - #2213 for #2178Contains the following user-affecting performance improvements:
MarkerLayer performance by caching projections - #2213PolygonLayer performance, particularly for polygons with holes - #2211PolylineLayer performance by improving culling algorithm - #2212Contains the following other notable changes:
Many thanks to these contributors (in no particular order):
chore: fix CI, remove all non-English languages from Windows demo installer by @JaffaKetchup in #2163
MapOptions.onPointerMove callback by @ReinisSprogis in #2137_retainChildren recursion by @shindonghwi in #2174RotatedOverlayImage.transformFilterQuality parameter by @Robbendebiene in #2169LatLng is non-finite by @monsieurtanuki in #2182TileLayer & MapController by @JaffaKetchup in #2197Tile widget key with dedicated stable TileKey by @braindamagedman in #2195strokeWidth when calculating polyline visibility by @braindamagedman in #2184LatLngBounds.isOverlapping calculation by @stani-m in #2190Full Changelog: v8.2.2...v8.3.0
Contains the following user-affecting changes:
MapOptions.onPointerMove callback - #2137InteractionOptions.flingAnimationDampingRatio parameter - #2177RotatedOverlayImage.transformFilterQuality parameter - #2169Contains the following user-affecting bug fixes:
TileLayer.tileBuilder for errored tiles - #2166 for #2154TileLayer's tile visibility calculation - #2174 for #2175LatLng is non-finite during projection - #2182 for #2178strokeWidth when calculating polyline visibility during non-aggressive culling - #2184LatLngBounds.isOverlapping calculation - #2190Contains the following user-affecting performance improvements:
TileKey - #2195Contains the following other notable changes:
Many thanks to these contributors (in no particular order):
chore: ignore deprecations, bump action versions, add lower flutter sdk bound to ci by @josxha in #2155
zoomOffset by @monsieurtanuki in #2133MapCamera.zoom is finite on construction by @JaffaKetchup in #2141Full Changelog: v8.2.1...v8.2.2
Contains the following user-affecting bug fixes:
TileLayer.zoomOffset - #2133 for #2127MapCamera.zoom is finite (to prevent confusing errors within layers) - #2141 for #2135Many thanks to these contributors (in no particular order):
fix: ensure tiles still load when failing to generate cache metadata by @JaffaKetchup in #2125
Full Changelog: v8.2.0...v8.2.1
Contains the following user-affecting bug fixes:
Contains the following user-affecting changes:
Many thanks to these contributors (in no particular order):
feat: add inverted fill option to PolygonLayer by @monsieurtanuki in #2046
PolygonLayer by @monsieurtanuki in #2046zoomOffset & emulated retina mode when generating tile coordinates by @monsieurtanuki in #2060Poly*Layer.drawInSingleWorld by @monsieurtanuki in #2069ContainCameraLatitude by @mbenoukaiss in #2073PolygonLayer.painterFillMethod by @JaffaKetchup in #2081FeatureLayerUtils.viewportRect return Rect.zero if unavailable by @JaffaKetchup in #2095optimizeRadiusInMeters option to CircleLayer by @monsieurtanuki in #2101workAcrossWorlds by @monsieurtanuki in #2113TileDisplay.fadeIn arguments by @JaffaKetchup in #2114LayerHitResult.coordinate correctly by @JaffaKetchup in #2093Full Changelog: v8.1.1...v8.2.0
Contains the following user-affecting changes:
PolygonLayer - #2046 (💰) for #2034Polyline/gonLayer.oneWorld parameter - #2069 for #2067ContainCameraLatitude camera constraint - #2073 for #2071TileLayer - #2074 and #2109PolygonLayer.painterFillMethod parameter & changed default fill methods - #2081NetworkTileProvider - #2082NetworkTileProvider - #2082CircleLayer.optimizeRadiusInMeters option to improve performance in some cases - #2101Polygon.labelPlacement with more flexible and extensible Polygon.labelPlacementCalculator/PolygonLabelPlacementCalculator system - #2102Contains the following user-affecting bug fixes:
zoomOffset & emulated retina mode when generating tile coordinates - #2060 for #2042LayerHitResult.coordinate correctly - #2093 for #2092LatLngBounds in MapCamera.visibleBounds for polygon culling - #2091 for #2080TileDisplay.fadeIn arguments - #2114 for #2098Contains the following meta changes to the package:
Many thanks to these contributors (in no particular order):
And an additional special thanks to @monsieurtanuki for investing so much of their time into this project recently - we appreciate it!
fix: prevent infinite looping when polygon labels displayed on rotated map by @monsieurtanuki in #2054
Full Changelog: v8.1.0...v8.1.1
Contains the following user-affecting bug fixes:
Many thanks to these contributors (in no particular order):
fix: ensure MapController.rotateAroundPoint does not move map when already rotated by @tlserver in #2029
MapController.rotateAroundPoint does not move map when already rotated by @tlserver in #2029Polygons and Polylines & refactoring by @monsieurtanuki in #2033Full Changelog: v8.0.0...v8.1.0
Contains the following user-affecting changes:
Polygons and Polylines - #2033Contains the following user-affecting bug fixes:
MapController.rotateAroundPoint does not move map when already rotated - #2029 for #2028Many thanks to these contributors (in no particular order):
fix!: added integer tileDimension & deprecated tileSize by @JaffaKetchup in #1940
hitValue from Polyline.renderHashCode by @JaffaKetchup in #1967TileLayer.reset stream to ensure handler is fired by @JaffaKetchup in #1943MapPosition/PositionCallback.hasGesture in-code by @alestiago in #1973tileDimension & deprecated tileSize by @JaffaKetchup in #1940filterQuality parameter to (Base)OverlayImage by @RBT22 in #1989BaseOverlayImage for external implementation by @JaffaKetchup in #1990Polyline/gonLayers by @JaffaKetchup in #1991Point<double> to Offset internally by @mootw in #1996Markers across all worlds by @monsieurtanuki in #2000Client instead of BaseClient in network tile/image provider by @slightfoot in #2011http.Client in NetworkTileProvider by @JaffaKetchup in #2012CircleMarkers by @monsieurtanuki in #2018Full Changelog: v7.0.2...v8.0.0
"Infinite Worlds
Contains the following user-affecting changes:
filterQuality parameter to (Base)OverlayImage - #1989BaseOverlayImage for external implementation/extension - #1990Point to Offset, and method names accordingly - #1996tileDimension & deprecated TileLayer.tileSize - #1940Contains the following user-affecting bug fixes:
TileLayer.reset stream internally to ensure handler is fired - #1943 for #1808Client instead of BaseClient in network tile/image provider - #2011 for #2010http.Client in NetworkTileProvider - #2012 for #2009Contains the following user-affecting performance improvements:
Polyline.renderHashCode included hashCode unnecessarily causing internal draw batching to fail - #1967Polyline/gonLayers was incorrectly used - #1991Polylines - #1993Many thanks to these contributors (in no particular order):
chore: relax dependency on 'package:logger' by @monsieurtanuki in #1922
PolygonLayer and PolylineLayer by @JaffaKetchup in #1925MapController to FlutterMap multiple times by @josxha in #1915Full Changelog: v7.0.1...v7.0.2
Note that this version causes a technically breaking change by removing
PolygonLayer.useDynamicUpdate&PolylineLayer.useDynamicUpdate, introduced in v7.0.1. However, the implementations for these was broken on introduction, and their intended purpose no longer exists. Therefore, these should not have been used in any capacity, and should not affect any projects.
Contains the following user-affecting bug fixes:
PolygonLayer & PolylineLayer inadvertently introduced by v7.0.1 - #1925 for #1921Polygon would only appear if their winding direction was opposite to the direction of the Polygon.points - #1925 for #1924MapController to a FlutterMap multiple times - #1915 for #1892fix: downgraded some dependencies to re-introduce compatbility with Flutter 3.19 by @monsieurtanuki in #1897
isPointInPolygon and make 40% faster (at least in JIT mode) by @ignatz in #1907Polygon cutting & color/translucency mixing by @JaffaKetchup in #1901PolygonLayer.useAltRenderer renderer when Polygons have multiple holes by @JaffaKetchup in #1906PolygonLayer & PolylineLayer by @JaffaKetchup in #1904Full Changelog: v7.0.0...v7.0.1
Contains the following user-affecting bug fixes:
PolygonLayer & PolylineLayer - #1904PolygonLayer.useAltRenderer renderer when Polygons have multiple holes - #1906Polygon cutting & color/translucency mixing - #1901Contains the following user-affecting performance improvements:
isPointInPolygon method up to 40% - #1907🔴 Deprecated MapOptions.applyPointerTranslucencyToLayers - #1822 for #1740
"onTap-ish At Last!"
Contains the following user-affecting changes:
Polyline(Layer), Polygon(Layer), and Circle(Layer) - #1822 (for #1740 and #385), #1728, #1886FlutterMap.options an optional parameter - #1816Canvas.drawVertices) render pathway for PolygonLayer - #1800Scalebar layer - #1821TileUpdateTransformers.debounce to debounce tile requests - #1850 (replaces #1840)Marker.computePixelAlignment method to calculate absolute alignment - #1847StrokePattern, which supports solid, dotted, and dashed styles for Polylines and the border of Polygons - #1855 (replaces #1845), #1865, #1871, #1875, #1876MapOptions.applyPointerTranslucencyToLayers - #1822 for #1740Contains the following user-affecting bug fixes:
NetworkTileProvider poor performance and ClientExceptions/SocketExceptions on disposal - #1742 for #1761, #1703, #1698Polygon/PolylineLayer failing to move on changes - #1825Polygon - #1854 for #1829PolylineLayer exception: "The west longitude can't be smaller than the east longitude" - #1879LatLngBounds.center to work across world bounds - #1860Contains the following user-affecting performance improvements:
Polyline and Polygon simplification, and enhanced Polyline culling algorithm to work within the same Polyline - #1704, #1795, #1805, #1812Polygon points & improved CRS internals - #1801PolygonLayer bundled drawing system - #1800Contains the following important internal changes (does not include changes to the example app, meta changes to the repo/org configuration, or minor changes):
MapInternalController & MapControllerImpl, and removed "FlutterMap" prefix from some members - #1738LatLngBounds mutable - #1834Many thanks to these contributors (in no particular order):
Nothing published for this version
This version is provided only to enable Flutter 3.22 compatibility without requiring a breaking change.
If possible, prefer to update directly to v7. This version is provided only to enable Flutter 3.22 compatibility without requiring a breaking change.
v6.2.0 was retracted from pub.dev due to a mistake in the release preparation. For more information, see this comment. v6.2.1 is the replacement without the issues.
Contains the following user-affecting changes:
Nothing published for this version
Contains the following user-affecting changes:
Contains the following user-affecting changes:
Polygons in a layer - #1707Contains the following user-affecting bug fixes:
RichAttributionWidget.showFlutterMapAttribution is false - #1712TileLayer.tileBounds - #1713 for #1710doubleTapDragZoom and scrollWheelZoom to InteractiveFlag.all - #1726 for #1725CircleLayer when panning - #1735MapPosition.hashCode - #1747Contains the following user-affecting performance improvements:
Bounds - #1706Polygon labels seperately (more strongly), and cache the TextPainter - #1716Many thanks to these contributors (in no particular order):
And an additional special thanks to @ignatz for investing so much of their time into this project recently - we appreciate it!
In other news:
Contains the following user-affecting bug fixes:
Contains the following user-affecting bug fixes:
CircleMarker's incorrect appearance and size - #1692 for #1688LateInitializationError when specifying initialCameraFit - #1691 for #1684MapOptions.cameraConstraint - #1700 for #1682 & #1699wmsOptions nor urlTemplate caused a null exception in getTileUrl and when retinaMode is true - #1701TapPosition) - #1694 for #1693Many thanks to these contributors (in no particular order):
Contains the following user-affecting changes:
"Photography"
Contains the following user-affecting changes:
MapCamera object to reduce scope of MapController & re-implemented internal state management - #1551 with #1614TileProviders & refactored methods - #1622minZoom property to CameraFits - #1562InteractiveFlag.doubleTapDragZoom - #1603NetworkTileProvider, to reduce tile loading times and reduce unnecessary tile server requests - #1629TileLayer.urlTemplate (via TileProvider.generateReplacementMap) to be filled with TileLayer.tileSize - #1665 for #1664MapOptions with InteractionOptions (accessed from MapOptions) - #1551MapOptions. center, bounds, zoom, and rotation with initialCenter, initialCameraFit, initialZoom, and initialRotation - #1551MapOptions.maxBounds with MapOptions.cameraConstraint - #1551TileLayer.backgroundColor property with MapOptions.backgroundColor to simplify interaction when using multiple tile layers - #1578 & #1647 for #1577 & #1566FlutterMap.nonRotatedChildren with an inverse purpose (usually internal) MobileLayerTransformer - #1615Marker.anchor with Marker.alignment that uses built-in Alignment object - #1659Marker.builder with non-builder Marker.child - #1659TileLayer.retinaMode behaviour - #1673 for #1670TileLayer.panBuffer and MapOptions.cameraConstraint - multiple PRsCustomPoint in favour of extension methods on Point<T> - #1585 for #1522MoveAndRotateResult in favour of a Record in format of ({bool moveSuccess, bool rotateSuccess}) - #1636Anchor, AnchorPos, and all anchor related terminology - #1659Contains the following user-affecting bug fixes:
fallbackUrl is defined - #1555 for #1554RichAnimationWidget when using FadeRAWA - #1591 for #1589TileProvider when running on the web, to avoid polluting the debug console with error messages - #1677 for #1654Polygon edge-cases - #1598 & #1599TileLayer.reset failing to load new tiles - #1620 for #1619Marker anchoring when counter-rotating - #1623 for #1500fitBounds failing to load new tiles - #1626 for #1563maxNativeZoom apparently failing to have any effect - #1627 for #1625hasGesture being false after double tap zoom in onPositionChanged callback - #1465 for #1630fallbackUrl when an exception is thrown whilst decodeing instead of during the network request - #1648 for #1649RichAttributionWidget - #1661TileLayer.fallbackUrl not being attempted when FlutterMapNetworkImageProvider failed to decode a non-image - part of #1662 for #1667FlutterMap widget was Transformed - #1676 for #1675Contains the following user-affecting performance improvements:
Polygon performance when using labels, by increasing batching ability and label location calculations - #1607 & #1641CircleMarker performance, by using a single CustomPainter instance and more efficient draw calls - #1679In other news:
Many thanks to these contributors (in no particular order):
And an additional special thanks to @rorystephenson for investing so much of their time into this project recently - we appreciate it!
Nothing published for this version
Nothing published for this version
Nothing published for this version
Deprecated TileUpdateTransformers.alwaysLoadAndPrune in favour of ignoreTapEvents - #1517
"Dart The Third"
Contains the following API changes:
FlutterMapState.move/MapController.move methods - #1532 for #952MapController.rotateAroundPoint method - #1532 for #1460TileLayer.fallbackUrl support to FileTileProvider - #1532AnchorAlign - #1532MarkerLayer/Layer interoperability - #1532onTap/MapEventTap when InteractiveFlag.doubleTapZoom is disabled - #1532CustomPoint - #1515TileUpdateTransformers.alwaysLoadAndPrune in favour of ignoreTapEvents - #1517AnchorAlign.none in favour of AnchorAlign.center or null - #1532NetworkNoRetryTileProvider in favour of custom NetworkTileProvider.httpClient - #1512FileTileProvider fallback to NetworkTileProvider on web - #1512saveLayers property from PolylineLayer - #1532 & #1519const LatLng objectsRecords (#1517)Contains the following bug fixes:
id of MapController.move is passed through to the emitted MapEventMove - #1534 in #1532 for #1542Polylines & Polygons - #1514mounted setState call in RichAttributionWidget - #1532 for #1538Contains the following performance improvements:
MediaQuery changes frequently - #1523CachingAssetBundle in AssetTileProvider when TileLayer.fallbackUrl is not specified - #1532 for #1436TileProviders and FlutterMapNetworkImageProvider - #1512In other news:
Many thanks to these contributors (in no particular order):
And an additional special thanks to @josxha & @ignatz for investing so much of their time into this project recently - we appreciate it!
Nothing published for this version
Removed leftover deprecations - #1475
"Out With The Old, In With The New"
Contains the following improvements:
TileLayer and underlying systems - #1475MapOptions - #1448 for #1444FlutterMapState's maybeOf method into maybeOf & of - #1495LatLngBounds.pad (unused and broken) method - #1427absorbPanEventsOnScrollables option - #1455 for #1454num/int/double) consistency internally - #1482Contains the following bug fixes:
LatLngBounds's null safety situation to improve stability - #1431Contains the following performance and stability improvements:
Many thanks to these contributors (in no particular order):
And an additional special thanks to @rorystephenson & @ignatz for investing so much of their time into this project recently - we appreciate it!
Nothing published for this version
Nothing published for this version
Deprecated obsolete parameter - #1368
Contains the following additions/removals:
FitBoundsOptions - #1367Keys to Polygons, Polylines, and CircleMarkers - #1402 & #1403Polyline parameter to treat width in meters - #1404TileLayer to preload surrounding tiles - #1405 for #1337Contains the following bug fixes:
MapController movement - #1374fitBounds - #1376fitBounds/bounds not working on first display - #1413Many thanks to these contributors (in no particular order):
Removed deprecated APIs from v2
"Boiler(plate) Repairs"
Contains the following additions/removals:
Polygon label rotation (countered to the map rotation) - #1332Contains the following bug fixes:
In other news:
Many thanks to these contributors (in no particular order):
Nothing published for this version
Nothing published for this version
Nothing published for this version
Contains the following additions/removals:
Contains the following additions/removals:
RotatedOverlayImage which supports image rotation and skewing by specifying a 3rd point - #1315latLngToScreenPoint and refactored pointToLatLng - #1330Contains the following bug fixes:
In other news:
Many thanks to these contributors (in no particular order):
Contains the following additions/removals:
Contains the following additions/removals:
Contains the following bug fixes:
In other news:
Many thanks to these contributors (in no particular order):
Contains the following additions/removals:
Contains the following additions/removals:
AnimationController before it is reassigned - #1303Polygons - #1295Contains the following bug fixes:
LateInitializationErrors by reworking MapController lifecycle - #1293 for #1288Polygons - #1295In other news:
Many thanks to these contributors (in no particular order):
Contains the following additions/removals:
"Blocked By OSM"
Contains the following additions/removals:
TileProvidersContains the following bug fixes:
In other news:
Many thanks to these contributors (in no particular order):
Nothing published for this version
Contains the following additions/removals:
Contains the following additions/removals:
Contains the following bug fixes:
In other news:
Many thanks to these contributors (in no particular order):
Deprecated the existing attributionBuilder & added a new method of attribution through AttributionWidget - #1262 for #1040
Contains the following additions/removals:
attributionBuilder & added a new method of attribution through AttributionWidget - #1262 for #1040Contains the following bug fixes:
In other news:
Many thanks to these contributors (in no particular order):
Contains the following additions/removals:
Contains the following additions/removals:
moveAndRotate - #1003Polyline - #1077Markers to avoid crash - #1147MapEventScrollWheelZoom event when zooming using scroll wheel - #1182isFilled parameter to Polygon - #501Polygons - #501maxBounds parameter to MapOptions - #1211tileBounds parameter to TileLayerOptions - #1212saveLayers parameter to PolylineLayerOptions and PolylinePainter - #1219 (part of #1165) for #1217Polygon - #1220 based off #800Polygon label centering algorithm with an option - #1225pointToLatLng method in MapController - #1115 for #496, #607, #981, #1010Contains the following bug fixes:
MapController move events - #1043 for #946ZoomButtonsPluginOption by checking minimum and maximum zoom properly - #1120Coords - #1113LateInitializationError when using polylineCulling - #1110 for #1119, #1037, #974, #931FileTileProvider on the web - #1170Polygon dotted border drawing - #501bounds in MapOptions - #1216In other news:
Many thanks to these contributors (in no particular order):
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
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
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
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
Your coding agent can read these notes before it upgrades. Set up the MCP server →