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
相关产品推荐
相关产品推荐

