NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #928 most downloaded on pub.dev
Map Launcher is a flutter plugin to find available maps installed on a device and launch them with a marker or show directions.
Last release 2 months ago
27 Jul 2026
Release timing varies
gaps range from 8 days to 11 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
70 releases · first in 2019
Add your own map apps, ship only the maps you use, and launch them in one line.
Add your own map apps, ship only the maps you use, and launch them in one line.
Maps are now MapApp objects instead of enum values. Subclass MapApp to
add any map app without forking the plugin. Only the maps you reference are
compiled into your app, so URL schemes, package names, and icons of unused
maps never touch your binary. And discovery results are directly launchable:
maps.first.show().
See MIGRATION.md for the full 5.x → 6.0 guide.
New Features:
MapApp to add any map app (regional, proprietary,MapApp.waze compiles in only Waze'sfinal maps = await request.getSupportedMaps([...])maps.first.show(). No more request/mapType plumbing in pickers.LSApplicationQueriesSchemes, namingUint8List. No flutter_svg dependency needed.dart run tool/fetch_icons.dart to refresh.Breaking Changes:
MapType enum → MapApp objects: MapType.google → MapApp.google.show(map: .google) compile unchanged.getSupportedMaps() →getSupportedMaps([.apple, .google, .waze]), getAvailableMaps() →getAvailableMaps(myMaps). Use MapApp.all for every supported map (thisSvgPicture.asset(map.icon) →Image.memory(map.iconBytes). No extra dependencies needed. flutter_svgSupportedMap: map.mapType → map.map (a MapApp),map.displayName → map.name. Entries returned by a request are directlymap.show().MapType.values.byName(saved) →myMaps.firstWhere((m) => m.id == saved). MapApp.id matches the oldtruckmeister (discontinued by Flitsmeister) andspedionNavigation (integrated module in the SPEDION fleet app, not aMapApp subclass featureFull Changelog: v5.0.1...v6.0.0
One column per quarter.
Add your own map apps, ship only the maps you use, and launch them in one line.
Maps are now MapApp objects instead of enum values. Subclass MapApp to
add any map app without forking the plugin. Only the maps you reference are
retained in Dart release code; native manifest entries are separate.
And discovery results are directly launchable:
maps.first.show().
See MIGRATION.md for the full 5.x → 6.0 guide.
New Features:
MapApp to add any map app (regional, proprietary,
internal) without forking the plugin. Works everywhere a built-in map does,
including discovery and launching.MapApp.waze compiles in only Waze's
Dart code, strings, and icon. Unreferenced maps are stripped from Dart AOT
snapshots, not from native manifests. Bare show() also retains its defaults.final maps = await request.getSupportedMaps([...])
then maps.first.show(). No more request/mapType plumbing in pickers.LSApplicationQueriesSchemes, naming
the exact scheme to add. Previously indistinguishable from "not installed".Uint8List. No flutter_svg dependency needed.
Run dart run tool/fetch_icons.dart to refresh.Breaking Changes:
MapType enum → MapApp objects: MapType.google → MapApp.google.
Dot-shorthand call sites like show(map: .google) compile unchanged.getSupportedMaps() →
getSupportedMaps([.apple, .google, .waze]), getAvailableMaps() →
getAvailableMaps(myMaps). Use MapApp.all for every supported map (this
opts out of tree shaking).SvgPicture.asset(map.icon) →
Image.memory(map.iconBytes). No extra dependencies needed. flutter_svg
is no longer required.SupportedMap: map.mapType → map.map (a MapApp),
map.displayName → map.name. Entries returned by a request are directly
launchable via map.show().MapType.values.byName(saved) →
myMaps.firstWhere((m) => m.id == saved). MapApp.id matches the old
enum names, so stored preferences keep working.truckmeister (discontinued by Flitsmeister) and
spedionNavigation (integrated module in the SPEDION fleet app, not a
standalone map) have been removed. Use the custom MapApp subclass feature
to add them back if needed.fix: remove dart:io from web import
dart:io from web importFull Changelog: v5.0.0...v5.0.1
v5: add support for desktop and web platforms, universal links and store urls by @mattermoran in #224
MapLauncher.showMarker() / showDirections() → MapLauncher.marker(...).show() / .directions(...).show(). Methods on AvailableMap are gone.AvailableMap → SupportedMap. Name and icon moved to MapType.displayName / MapType.icon. SupportedMap only pairs a MapType with isInstalled.Coords → LocationCoords: Coords(latitude, longitude) → .coords(lat, lng, title: '...'). Title moved into the location.Waypoint removed. Use LocationCoords directly.DirectionsMode → TravelMode.extraParams → extra: accepts typed extras (GoogleExtra, AppleExtra, etc.) or raw Map<String, String>.MapType enum reordered, now carries displayName, playStoreId, appStoreId, hasUniversalLink, icon.getAvailableMaps() returns List<SupportedMap> instead of List<AvailableMap>.isMapAvailable() removed. Use getSupportedMaps() on a request.getUrl(), getUniversalUrl(), getSchemeUrl().GoogleExtra, AppleExtra, WazeExtra, TencentExtra, YandexNaviExtra.getSupportedMaps() — per-request discovery that respects capabilities.MapType.appStoreUrl / MapType.playStoreUrl.MapLaunchException with URL and cause.CONTRIBUTING.md for adding new map providers.Full Changelog: v4.6.0...v5.0.0
New Features:
getUrl(), getUniversalUrl(), and getSchemeUrl() let you preview URLs without launching.GoogleExtra, AppleExtra, WazeExtra, TencentExtra, YandexNaviExtra.getSupportedMaps(): Per-request map discovery that respects capabilities (marker support, search support, waypoint support).getAvailableMaps(): Platform-wide map discovery returning both installed and universal-link maps.MapType: appStoreUrl and playStoreUrl getters for linking to app store pages.MapLaunchException: Typed exception with the URL and underlying cause when a launch fails.Breaking Changes:
MapLauncher.showMarker() / MapLauncher.showDirections() → MapLauncher.marker(...).show() / MapLauncher.directions(...).show(). Methods on AvailableMap are gone too.AvailableMap → SupportedMap: No longer carries mapName or icon. Those are now properties on MapType itself (MapType.displayName, MapType.icon). SupportedMap only pairs a MapType with isInstalled.Coords → LocationCoords: Coords(latitude, longitude) → .coords(lat, lng, title: '...'). Title moved from showMarker() into the location. latitude/longitude fields renamed to lat/lng.Waypoint removed: Use LocationCoords directly in the waypoints list.DirectionsMode → TravelMode: Same values (driving, walking, transit, bicycling), renamed.extraParams → extra: Now accepts typed extras (GoogleExtra, AppleExtra, etc.) or raw Map<String, String>. Passed via show(extra: ...) instead of the old method parameter.MapType enum values reordered: google is now before googleGo. Enum carries displayName, playStoreId, appStoreId, hasUniversalLink, icon.MapLauncher.getAvailableMaps() → MapLauncher.getAvailableMaps(): Same name, but returns List<SupportedMap> instead of List<AvailableMap>.isMapAvailable() removed: Use getSupportedMaps() on a request instead.Docs:
CONTRIBUTING.md with step-by-step guide for adding new map providers.feat: Include SPEDION Navigation by @D3nn7 in #220
Full Changelog: v4.5.0...v4.6.0
Include AirNav Pro navigation app into package by @BranislavKljaic96 in #219
Full Changelog: v4.4.3...v4.5.0
fix: gracefully handle invalid urls
fix: preserve url scheme casing by @mattermoran in #212
Full Changelog: v4.4.1...v4.4.2
fix: isMapAvailable method regression by @mattermoran in #210
Full Changelog: v4.4.0...v4.4.1
feat: add support for neshan map by @mattermoran in #208
Full Changelog: v4.3.0...v4.4.0
feat: add support for moovit map by @mattermoran in #207
Full Changelog: v4.2.0...v4.3.0
feat: add waypoints support for yandex maps and yandex navi (#206) (@ahmetcj4)
Add support for swift package manager and bump min ios to 13
- Fix parsing available map json
Improve public API documentation
Recreate the plugin with new structure to prepare for multiplatform support
Add Mappls MapmyIndia (@Ajaay7 & @Saksham66)
Remove support for apps using android v1 embedding
Remove support for Maps.me on android as it stopped working a while ago
Bump flutter min version to 3.13.0
- Add Mapy.cz (@TheHumr)
Add Naver Map, KakaoMap and TMAP (@trentcharlie & @JulyWitch)
Remove deprecated launchMap method. use showMarker instead
launchMap method. use showMarker insteadBREAKING: waypoints parameter now uses List instead of List `
BREAKING: waypoints parameter now uses List<Waypoint> instead of `List<Coord>``
Add support for waypoints on Apple Maps
- Update screenshots
- Bump kotlin version to 1.5.31
Add TomTom Go #125 (@frankvollebregt)
- Cleanup
- Fix empty title in Google Maps
Fix originTitle on showDirections method
originTitle on showDirections methodUpdate README with information that title should now work in Google Maps for Android starting from v11.12
Update directions_url.dart formatting
directions_url.dart formattingAdd Petal maps #103 (@mericgerceker)
Replace jcenter with mavenCentral #100
Fix iOS crash when using unsupported MapTypes #83 (@bridystone)
Fix deprecation compiler warning in Xcode #78 (@bridystone)
- Stable null safety
- Migrate to null safety - Thanks to @LDevineau-eVtech
Breaking change! See here for migration
Breaking change! See here for migration
- Add warning for v1.1.3
Fix Tencent Maps and 2GIS url scheme on ios #56
Add extraParams option to support passing additional query parameters that might be needed like api keys etc
extraParams option to support passing additional query parameters that might be needed like api keys etcBREAKING CHANGE: not depending on flutter_svg anymore. See README for migration
Add import fallback for #import
#import <map_launcher/map_launcher-Swift.h>- Fix default zoom level
- Add support for 2GIS
- Add waypoints for Google Maps
- Add zoom parameter
- Add showDirections method - Update example app
Update flutter_svg constraint Thanks to @tuarrep and @jcsena
Fix #31 Thanks to @LeonidVeremchuk
Add support for android embedding v2
- Add constraint for flutter_svg
Replace png icons with svgs Thanks to @shinsenter
Add support for Maps.Me and OsmAnd Thanks to @gsi-yoan and @gsi-alejandrogomez
Add support for Citymapper Thanks to @Kiruel
Fix Google Maps title issue on iOS Thanks to @illiashvedov
Specify swift version in map_launcher.podspec file
- Add license
Add code to show title in Google Maps for Android. Should work once fixed in Google Maps. Update README.
Your coding agent can read these notes before it upgrades. Set up the MCP server →