directions static method

Future<bool> directions(
  1. double latitude,
  2. double longitude, {
  3. UMapApp app = UMapApp.system,
  4. UTravelMode mode = UTravelMode.driving,
})

Implementation

static Future<bool> directions(double latitude, double longitude, {UMapApp app = UMapApp.system, UTravelMode mode = UTravelMode.driving}) {
  final String q = "$latitude,$longitude";
  final String googleMode = switch (mode) {
    UTravelMode.driving => "driving",
    UTravelMode.walking => "walking",
    UTravelMode.transit => "transit",
    UTravelMode.cycling => "bicycling",
  };
  final String web = "https://www.google.com/maps/dir/?api=1&destination=$q&travelmode=$googleMode";
  if (kIsWeb || Platform.isWindows || Platform.isLinux) return open(web);
  if (Platform.isAndroid) {
    return switch (app) {
      UMapApp.google => open("google.navigation:q=$q&mode=${mode == UTravelMode.walking ? "w" : (mode == UTravelMode.cycling ? "b" : "d")}", androidPackage: "com.google.android.apps.maps"),
      UMapApp.waze => open("https://waze.com/ul?ll=$q&navigate=yes", androidPackage: "com.waze"),
      _ => open("geo:$q?q=$q", androidPackage: _androidMapPackage(app)),
    };
  }
  final String appleMode = switch (mode) {
    UTravelMode.walking => "w",
    UTravelMode.transit => "r",
    _ => "d",
  };
  return switch (app) {
    UMapApp.google => _openFirst(<String>["comgooglemaps://?daddr=$q&directionsmode=$googleMode", web]),
    UMapApp.waze => _openFirst(<String>["waze://?ll=$q&navigate=yes", "https://waze.com/ul?ll=$q&navigate=yes"]),
    _ => open("maps://?daddr=$q&dirflg=$appleMode"),
  };
}