map_launcher
Map Launcher is a flutter plugin to find available maps installed on a device and launch them with a marker or show directions.
6.0.0
175K downloads/mo
#901 most downloaded on pub.dev
mattermoran/map_launcher
What this package is like to depend on
Last release 27 days ago
27 Jul 2026
Release timing varies
gaps range from 8 days to 11 months
Nearly every release is documented
notes for 68 of 68 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
70 releases · first in 2019
7 releases in the last 12 months
see the full history below
Release timeline
70 releases · Oct 2019 to Jul 2026Releases
latest 60 of 70-
6.0.027 Jul 2026Release notes
Open source →Add your own map apps, ship only the maps you use, and launch them in one line.
Maps are now
MapAppobjects instead of enum values. SubclassMapAppto
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:
- Custom maps: subclass
MapAppto add any map app (regional, proprietary,
internal) without forking the plugin. Works everywhere a built-in map does,
including discovery and launching. - Tree-shakeable maps: referencing
MapApp.wazecompiles in only Waze's
code, strings, and icon. Unreferenced maps are stripped completely from
release binaries, verified by scanning AOT snapshots. - Launchable discovery results:
final maps = await request.getSupportedMaps([...])
thenmaps.first.show(). No more request/mapType plumbing in pickers. - Misconfiguration warning (iOS): debug builds print a warning when a map
passed to discovery is missing fromLSApplicationQueriesSchemes, naming
the exact scheme to add. Previously indistinguishable from "not installed". - Official app icons: 256×256 PNG icons sourced from iTunes and Google Play
Store APIs, embedded asUint8List. Noflutter_svgdependency needed.
Rundart run tool/fetch_icons.dartto refresh. - Generic native layer: iOS/Android detection is driven entirely from
Dart. The native code has zero map-specific knowledge.
Breaking Changes:
MapTypeenum →MapAppobjects:MapType.google→MapApp.google.
Dot-shorthand call sites likeshow(map: .google)compile unchanged.- Discovery takes an explicit list:
getSupportedMaps()→
getSupportedMaps([.apple, .google, .waze]),getAvailableMaps()→
getAvailableMaps(myMaps). UseMapApp.allfor every supported map (this
opts out of tree shaking). - Icons are PNG bytes, not SVG assets:
SvgPicture.asset(map.icon)→
Image.memory(map.iconBytes). No extra dependencies needed.flutter_svg
is no longer required. SupportedMap:map.mapType→map.map(aMapApp),
map.displayName→map.name. Entries returned by a request are directly
launchable viamap.show().- Persisted map names:
MapType.values.byName(saved)→
myMaps.firstWhere((m) => m.id == saved).MapApp.idmatches the old
enum names, so stored preferences keep working. - Removed maps:
truckmeister(discontinued by Flitsmeister) and
spedionNavigation(integrated module in the SPEDION fleet app, not a
standalone map) have been removed. Use the customMapAppsubclass feature
to add them back if needed.
What's Changed
- v6: custom maps, treeshaking, new icons by @mattermoran in #226
Full Changelog: v5.0.1...v6.0.0
Release notes
Open source →Add your own map apps, ship only the maps you use, and launch them in one line.
Maps are now
MapAppobjects instead of enum values. SubclassMapAppto 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:
- Custom maps: subclass
MapAppto add any map app (regional, proprietary, internal) without forking the plugin. Works everywhere a built-in map does, including discovery and launching. - Tree-shakeable maps: referencing
MapApp.wazecompiles in only Waze's code, strings, and icon. Unreferenced maps are stripped completely from release binaries, verified by scanning AOT snapshots. - Launchable discovery results:
final maps = await request.getSupportedMaps([...])thenmaps.first.show(). No more request/mapType plumbing in pickers. - Misconfiguration warning (iOS): debug builds print a warning when a map
passed to discovery is missing from
LSApplicationQueriesSchemes, naming the exact scheme to add. Previously indistinguishable from "not installed". - Official app icons: 256×256 PNG icons sourced from iTunes and Google Play
Store APIs, embedded as
Uint8List. Noflutter_svgdependency needed. Rundart run tool/fetch_icons.dartto refresh. - Generic native layer: iOS/Android detection is driven entirely from Dart. The native code has zero map-specific knowledge.
Breaking Changes:
MapTypeenum →MapAppobjects:MapType.google→MapApp.google. Dot-shorthand call sites likeshow(map: .google)compile unchanged.- Discovery takes an explicit list:
getSupportedMaps()→getSupportedMaps([.apple, .google, .waze]),getAvailableMaps()→getAvailableMaps(myMaps). UseMapApp.allfor every supported map (this opts out of tree shaking). - Icons are PNG bytes, not SVG assets:
SvgPicture.asset(map.icon)→Image.memory(map.iconBytes). No extra dependencies needed.flutter_svgis no longer required. SupportedMap:map.mapType→map.map(aMapApp),map.displayName→map.name. Entries returned by a request are directly launchable viamap.show().- Persisted map names:
MapType.values.byName(saved)→myMaps.firstWhere((m) => m.id == saved).MapApp.idmatches the old enum names, so stored preferences keep working. - Removed maps:
truckmeister(discontinued by Flitsmeister) andspedionNavigation(integrated module in the SPEDION fleet app, not a standalone map) have been removed. Use the customMapAppsubclass feature to add them back if needed.
- Custom maps: subclass
-
5.0.123 Jul 2026 -
5.0.022 Jul 2026Release notes
Open source →What's Changed
- v5: add support for desktop and web platforms, universal links and store urls by @mattermoran in #224
Breaking Changes
MapLauncher.showMarker()/showDirections()→MapLauncher.marker(...).show()/.directions(...).show(). Methods onAvailableMapare gone.AvailableMap→SupportedMap. Name and icon moved toMapType.displayName/MapType.icon.SupportedMaponly pairs aMapTypewithisInstalled.Coords→LocationCoords:Coords(latitude, longitude)→.coords(lat, lng, title: '...'). Title moved into the location.Waypointremoved. UseLocationCoordsdirectly.DirectionsMode→TravelMode.extraParams→extra: accepts typed extras (GoogleExtra,AppleExtra, etc.) or rawMap<String, String>.MapTypeenum reordered, now carriesdisplayName,playStoreId,appStoreId,hasUniversalLink,icon.getAvailableMaps()returnsList<SupportedMap>instead ofList<AvailableMap>.isMapAvailable()removed. UsegetSupportedMaps()on a request.- Minimum SDK: Dart 3.11+, Flutter 3.3+.
New Features
- Desktop & web support (macOS, Windows, Linux, web) via universal links.
- Scheme-to-universal fallback when native app isn't installed.
- Search-based markers and directions (Google, Apple).
- URL inspection:
getUrl(),getUniversalUrl(),getSchemeUrl(). - Typed extras:
GoogleExtra,AppleExtra,WazeExtra,TencentExtra,YandexNaviExtra. getSupportedMaps()— per-request discovery that respects capabilities.- Store URLs:
MapType.appStoreUrl/MapType.playStoreUrl. MapLaunchExceptionwith URL and cause.
Docs
- Added
CONTRIBUTING.mdfor adding new map providers.
Full Changelog: v4.6.0...v5.0.0
Release notes
Open source →New Features:
- Desktop & web support: macOS, Windows, Linux, and web platforms via universal links (HTTPS URLs).
- Scheme-to-universal fallback: On mobile, if a native app scheme URL fails (app not installed), automatically falls back to the universal HTTPS URL.
- Search-based markers and directions: Google and Apple Maps support text queries for both markers and destinations.
- URL inspection:
getUrl(),getUniversalUrl(), andgetSchemeUrl()let you preview URLs without launching. - Extras system: Type-safe, map-specific parameters via
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.- Store URLs on
MapType:appStoreUrlandplayStoreUrlgetters for linking to app store pages. MapLaunchException: Typed exception with the URL and underlying cause when a launch fails.
Breaking Changes:
- New builder-style API:
MapLauncher.showMarker()/MapLauncher.showDirections()→MapLauncher.marker(...).show()/MapLauncher.directions(...).show(). Methods onAvailableMapare gone too. AvailableMap→SupportedMap: No longer carriesmapNameoricon. Those are now properties onMapTypeitself (MapType.displayName,MapType.icon).SupportedMaponly pairs aMapTypewithisInstalled.Coords→LocationCoords:Coords(latitude, longitude)→.coords(lat, lng, title: '...'). Title moved fromshowMarker()into the location.latitude/longitudefields renamed tolat/lng.Waypointremoved: UseLocationCoordsdirectly in the waypoints list.DirectionsMode→TravelMode: Same values (driving, walking, transit, bicycling), renamed.extraParams→extra: Now accepts typed extras (GoogleExtra,AppleExtra, etc.) or rawMap<String, String>. Passed viashow(extra: ...)instead of the old method parameter.MapTypeenum values reordered:googleis now beforegoogleGo. Enum carriesdisplayName,playStoreId,appStoreId,hasUniversalLink,icon.MapLauncher.getAvailableMaps()→MapLauncher.getAvailableMaps(): Same name, but returnsList<SupportedMap>instead ofList<AvailableMap>.isMapAvailable()removed: UsegetSupportedMaps()on a request instead.- Minimum SDK: Dart 3.11+, Flutter 3.3+.
Docs:
- Added
CONTRIBUTING.mdwith step-by-step guide for adding new map providers.
-
4.6.022 Jul 2026Release notes
Open source →What's Changed
- feat: Include SPEDION Navigation by @D3nn7 in #220
- feat: add Magic Earth as a supported map on both Android and iOS by @APopaMagicLane in #222
New Contributors
- @D3nn7 made their first contribution in #220
- @APopaMagicLane made their first contribution in #222
Full Changelog: v4.5.0...v4.6.0
-
4.5.017 Mar 2026Release notes
Open source →What's Changed
- Include AirNav Pro navigation app into package by @BranislavKljaic96 in #219
New Contributors
- @BranislavKljaic96 made their first contribution in #219
Full Changelog: v4.4.3...v4.5.0
-
4.4.329 Jan 2026 -
4.4.201 Sep 2025Release notes
Open source →What's Changed
- fix: preserve url scheme casing by @mattermoran in #212
Full Changelog: v4.4.1...v4.4.2
-
4.4.128 Aug 2025Release notes
Open source →What's Changed
- fix: isMapAvailable method regression by @mattermoran in #210
Full Changelog: v4.4.0...v4.4.1
-
4.4.022 Aug 2025Release notes
Open source →What's Changed
- feat: add support for neshan map by @mattermoran in #208
Full Changelog: v4.3.0...v4.4.0
-
4.3.022 Aug 2025Release notes
Open source →What's Changed
- feat: add support for moovit map by @mattermoran in #207
Full Changelog: v4.2.0...v4.3.0
-
4.2.021 Aug 2025Release notes
Open source →- feat: add waypoints support for yandex maps and yandex navi (#206) (@ahmetcj4)
-
4.1.021 Aug 2025 -
4.0.221 Aug 2025 -
4.0.119 Aug 2025 withdrawnRelease notes
Open source → -
4.0.027 Jul 2025Release notes
Open source →- Recreate the plugin with new structure to prepare for multiplatform support
- Bump android min sdk to 21
-
3.5.025 Aug 2024 -
3.4.013 Aug 2024 -
3.3.105 Jun 2024 -
3.3.009 Apr 2024Release notes
Open source →- Add privacy manifest
- Bump flutter min version to 3.13.0
- Bump dart min version to 3.1.0
-
3.2.007 Mar 2024 -
3.1.019 Nov 2023Release notes
Open source →- Add Naver Map, KakaoMap and TMAP (@trentcharlie & @JulyWitch)
- Add support for AGP 7.4.2 and up (@bitsydarel)
-
3.0.117 Oct 2023Release notes
Open source →- Rename Sygic to Sygic Truck
- Remove deprecated
launchMapmethod. useshowMarkerinstead
-
3.0.017 Oct 2023Release notes
Open source →BREAKING: waypoints parameter now uses
List<Waypoint>instead of `List<Coord>``- Add CoPilot map (@tjeffree)
- Add Go Fleet and Sygic Truck maps (@amrahmed242)
- Add Flitsmeister and Truckmeister (@robinbonnes & @frankvollebregt)
- Add waypoint labels for Apple Maps (@manafire)
- Add support for gradle 8 (@m-derakhshi)
- Fix future not completing on iOS
-
2.5.014 Feb 2023 -
2.5.0+114 Feb 2023 -
2.4.019 Sep 2022 -
2.3.010 Aug 2022 -
2.3.0+111 Aug 2022 -
2.2.327 May 2022 -
2.2.202 May 2022 -
2.2.1+114 Feb 2022Release notes
Open source →- Update README with information that title should now work in Google Maps for Android starting from v11.12
-
2.2.1+210 Apr 2022Release notes
Open source →- Add dartdoc comments
- Update
directions_url.dartformatting - Update broken link in the README
-
2.2.002 Feb 2022 -
2.1.213 Jan 2022 -
2.1.123 Jun 2021 -
2.1.020 Jun 2021Release notes
Open source →- Add OSMAnd+ #82 (@bridystone)
- Add Here WeGo #77 (@aleksandr-m)
- Add zoom level for OSMAnd on iOS #79 (@bridystone)
- Fix deprecation compiler warning in Xcode #78 (@bridystone)
- Bump minimum iOS version to 10
-
2.0.005 Apr 2021 -
2.0.0-nullsafety.023 Feb 2021 pre-release -
1.1.301 Feb 2021Release notes
Open source →Breaking change! See here for migration
- Fix Android 11 not showing installed maps #58
- Thanks to @BasPhair, @olsisaqe
-
1.1.3+123 Feb 2021 -
1.1.208 Jan 2021 -
1.1.122 Dec 2020Release notes
Open source →- Add
extraParamsoption to support passing additional query parameters that might be needed like api keys etc
- Add
-
1.0.005 Nov 2020Release notes
Open source →- BREAKING CHANGE: not depending on flutter_svg anymore. See README for migration
- Add support for Google Maps GO
- Under the hood changes
- Thanks to @andoni97, @Pavel-Sulimau, @grinder15 for contribution
-
0.12.207 Sep 2020Release notes
Open source →- Add import fallback for
#import <map_launcher/map_launcher-Swift.h> - Thanks to @fisherjoe
- Add import fallback for
-
0.12.107 Sep 2020 -
0.12.014 Aug 2020 -
0.11.010 Aug 2020 -
0.10.031 Jul 2020 -
0.9.026 Jul 2020 -
0.8.222 Jul 2020 -
0.8.115 Jul 2020 -
0.8.014 Jul 2020 -
0.7.112 Jul 2020 -
0.7.012 Jul 2020 -
0.6.020 Jun 2020Release notes
Open source →- Add support for Maps.Me and OsmAnd </br> Thanks to @gsi-yoan and @gsi-alejandrogomez
-
0.5.002 Jun 2020 -
0.4.522 Apr 2020 -
0.4.427 Mar 2020 -
0.4.322 Feb 2020 -
0.4.222 Jan 2020Release notes
Open source →- Add code to show title in Google Maps for Android. Should work once fixed in Google Maps. Update README.