You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中点击ElevatedButton唤起谷歌地图/Waze等导航应用的实现方法

Flutter唤起谷歌地图/Waze等导航应用实现方案

1. 添加依赖

首先在pubspec.yaml中引入url_launcher包,用于打开外部应用的URL链接:

dependencies:
  flutter:
    sdk: flutter
  url_launcher: ^6.2.5 # 可替换为官方最新版本

执行flutter pub get完成依赖安装。

2. 导入包

在需要实现导航功能的页面导入包:

import 'package:url_launcher/url_launcher.dart';

3. 编写导航唤起逻辑

假设你已经获取到当前位置经纬度currentLat, currentLng、目的地经纬度destLat, destLng,可以分别编写对应导航应用的唤起方法:

唤起谷歌地图

Future<void> openGoogleMaps() async {
  final navUri = Uri.parse(
    'https://www.google.com/maps/dir/?api=1&origin=$currentLat,$currentLng&destination=$destLat,$destLng&travelmode=driving'
  );
  if (await canLaunchUrl(navUri)) {
    await launchUrl(navUri);
  } else {
    throw '无法打开谷歌地图应用';
  }
}

唤起Waze

Future<void> openWaze() async {
  final navUri = Uri.parse(
    'waze://?ll=$destLat,$destLng&from=$currentLat,$currentLng&navigate=yes'
  );
  if (await canLaunchUrl(navUri)) {
    await launchUrl(navUri);
  } else {
    // Waze未安装时,自动 fallback 到谷歌地图
    await openGoogleMaps();
  }
}

4. 整合到ElevatedButton中

可以直接在按钮回调里唤起指定应用,也可以做弹窗让用户选择导航应用,示例如下:

ElevatedButton(
  onPressed: () async {
    // 示例1:直接唤起谷歌地图
    await openGoogleMaps();

    // 示例2:弹出选择框让用户选导航应用
    // showModalBottomSheet(
    //   context: context,
    //   builder: (ctx) => Column(
    //     mainAxisSize: MainAxisSize.min,
    //     children: [
    //       ListTile(
    //         title: const Text('用谷歌地图导航'),
    //         onTap: () {
    //           Navigator.pop(ctx);
    //           openGoogleMaps();
    //         },
    //       ),
    //       ListTile(
    //         title: const Text('用Waze导航'),
    //         onTap: () {
    //           Navigator.pop(ctx);
    //           openWaze();
    //         },
    //       ),
    //     ],
    //   ),
    // );
  },
  child: const Text('开始导航'),
),

5. iOS平台额外配置

如果需要支持iOS唤起Waze等第三方导航应用,需在Info.plist中添加对应的URL Scheme:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>waze</string>
  <string>googlemaps</string>
</array>

Android平台无需额外配置,默认支持打开外部应用链接。

内容的提问来源于stack exchange,提问作者Mostafa Pirhayati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 11:18:43