map_launcher 6.0.0
map_launcher: ^6.0.0 copied to clipboard
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 #
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:
- 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.
5.0.1 #
- fix: remove
dart:iofrom web import
5.0.0 #
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.0 #
4.0.0 #
- Recreate the plugin with new structure to prepare for multiplatform support
- Bump android min sdk to 21
3.5.0 #
- Add Mappls MapmyIndia (@Ajaay7 & @Saksham66)
3.4.0 #
- Remove support for apps using android v1 embedding
3.3.1 #
- Remove support for Maps.me on android as it stopped working a while ago
3.3.0 #
- Add privacy manifest
- Bump flutter min version to 3.13.0
- Bump dart min version to 3.1.0
3.2.0 #
- Add Mapy.cz (@TheHumr)
3.1.0 #
- Add Naver Map, KakaoMap and TMAP (@trentcharlie & @JulyWitch)
- Add support for AGP 7.4.2 and up (@bitsydarel)
3.0.1 #
- Rename Sygic to Sygic Truck
- Remove deprecated
launchMapmethod. useshowMarkerinstead
3.0.0 #
BREAKING: waypoints parameter now uses List<Waypoint> instead of `List
- 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.0+1 #
- Update screenshots
2.5.0 #
- Add support for waypoints on Apple Maps
2.4.0 #
- Bump kotlin version to 1.5.31
2.3.0+1 #
- Cleanup
2.3.0 #
- Add TomTom Go #125 (@frankvollebregt)
2.2.3 #
- Fix empty title in Google Maps
2.2.2 #
- Fix
originTitleonshowDirectionsmethod
2.2.1+2 #
- Add dartdoc comments
- Update
directions_url.dartformatting - Update broken link in the README
2.2.1+1 #
- Update README with information that title should now work in Google Maps for Android starting from v11.12
2.2.1 #
- Update Petal maps icon
2.2.0 #
- Add Petal maps #103 (@mericgerceker)
2.1.2 #
- Replace jcenter with mavenCentral #100
2.1.1 #
- Fix iOS crash when using unsupported MapTypes #83 (@bridystone)
2.1.0 #
- 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.0+1 #
- Fix formatting
2.0.0 #
- Stable null safety
2.0.0-nullsafety.0 #
- Migrate to null safety
- Thanks to @LDevineau-eVtech
1.1.3+1 #
- Add warning for v1.1.3
1.1.3 #
Breaking change! See here for migration
- Fix Android 11 not showing installed maps #58
- Thanks to @BasPhair, @olsisaqe
1.1.2 #
- Fix Tencent Maps and 2GIS url scheme on ios #56
1.1.1 #
- Add
extraParamsoption to support passing additional query parameters that might be needed like api keys etc
1.1.0 #
- Add support for Tencent (QQ Maps)
1.0.0 #
- 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.2 #
- Add import fallback for
#import <map_launcher/map_launcher-Swift.h> - Thanks to @fisherjoe
0.12.1 #
- Fix default zoom level
0.12.0 #
- Add support for 2GIS
0.11.0 #
- Add waypoints for Google Maps
0.10.0 #
- Add zoom parameter
0.9.0 #
- Add showDirections method
- Update example app
0.8.2 #
- Update flutter_svg constraint
Thanks to @tuarrep and @jcsena
0.8.1 #
- Fix #31
Thanks to @LeonidVeremchuk
0.8.0 #
- Add support for android embedding v2
0.7.1 #
- Add constraint for flutter_svg
0.7.0 #
- Replace png icons with svgs
Thanks to @shinsenter
0.6.0 #
- Add support for Maps.Me and OsmAnd
Thanks to @gsi-yoan and @gsi-alejandrogomez
0.5.0 #
- Add support for Citymapper
Thanks to @Kiruel
0.4.5 #
- Fix Google Maps title issue on iOS
Thanks to @illiashvedov
0.4.4 #
- Specify swift version in map_launcher.podspec file
0.4.3 #
- Add license
0.4.2 #
- Add code to show title in Google Maps for Android. Should work once fixed in Google Maps. Update README.
0.4.1 #
- Update README file. Remove author field from pubspec.yaml
0.4.0 #
- Added support for Yandex Maps and Yandex Navigator
Updated icons
0.3.2 #
- Fixes #1 'MKCoordinateRegionMake' is unavailable in Swift
Thanks to @diegogarciar
0.3.1 #
- Throw a PlatformException if map is not installed
0.3.0 #
- Added Waze support
0.2.0 #
- Added method to check if map is available
0.1.3 #
- Added icons for maps
- Added iOS gif to README
0.1.2 #
- Migrate to AndroidX
0.1.1 #
- Update description in pubspec.yaml
0.1.0 #
- Get available maps on iOS and Android
- Launch maps with a marker
