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

如何在Flutter中正确调用Waze?解决url_launcher调用失败问题

Flutter调用Waze应用的正确配置与URL格式

错误原因说明

提示“component name for ... is null”通常是因为系统无法识别Waze的URL Scheme,或者App未配置对应的权限,导致无法定位到Waze应用。

正确的Waze URL格式

  • 地址导航/定位:

    waze://?q=地址编码&navigate=yes
    

    示例(你的目标地址):

    waze://?q=Calea%20Rahovei%20276,%20Sector%201,%20București&navigate=yes
    

    若仅需展示位置而非导航,可去掉&navigate=yes。

  • 坐标导航/定位:

    waze://?ll=纬度,经度&navigate=yes
    

    示例:

    waze://?ll=37.774929,-122.419416&navigate=yes
    

    同样,去掉&navigate=yes可仅展示该坐标位置。

必须的平台配置

Android

在android/app/src/main/AndroidManifest.xml的<activity>标签内添加intent-filter,让系统识别Waze的Scheme:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="waze" />
</intent-filter>

iOS

在ios/Runner/Info.plist中添加LSApplicationQueriesSchemes数组,允许App查询Waze的Scheme:

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

调用代码示例

确保使用最新版url_launcher插件,调用前先检查是否可打开:

import 'package:url_launcher/url_launcher.dart';

Future<void> openWazeLocation() async {
  // 选择地址或坐标URL
  final wazeUrl = 'waze://?q=Calea%20Rahovei%20276,%20Sector%201,%20București&navigate=yes';
  // final wazeUrl = 'waze://?ll=37.774929,-122.419416&navigate=yes';

  final uri = Uri.parse(wazeUrl);
  if (await canLaunchUrl(uri)) {
    await launchUrl(uri);
  } else {
    throw '无法打开Waze应用,请确认已安装';
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:56:04