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

Flutter中launch()已废弃,如何改用launchUrl()实现跳转功能?

改用launchUrl()实现电话拨打、WhatsApp及Messenger跳转

在url_launcher插件中,launch()已被废弃,替代的launchUrl()要求传入Uri类型参数,同时建议配合异步处理与跳转可行性判断,避免异常。以下是对应场景的修改代码:

1. 电话拨打

_directCall() async {
  Uri uri = Uri.parse('tel:00962785522213');
  if (await canLaunchUrl(uri)) {
    await launchUrl(uri);
  } else {
    throw '无法拨打该号码';
  }
}

2. 跳转WhatsApp

_launchWhatsapp() async {
  Uri uri = Uri.parse("https://wa.me/+962797809910");
  if (await canLaunchUrl(uri)) {
    await launchUrl(uri);
  } else {
    throw '设备未安装WhatsApp';
  }
}

3. 跳转Messenger

_openMessenger() async {
  Uri uri = Uri.parse("http://m.me/amr.al.shugran");
  if (await canLaunchUrl(uri)) {
    await launchUrl(uri);
  } else {
    throw '设备未安装Messenger';
  }
}

核心修改说明:

  • 用Uri.parse()将原字符串URL转换为Uri对象,作为launchUrl()的必填入参
  • 添加async/await处理异步操作,因为launchUrl()和canLaunchUrl()均为异步方法
  • 通过canLaunchUrl()提前校验跳转可行性,避免直接调用失败引发异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:55:23