url_launcher是flutter官方提供的一款用于在移动平台中启动URL的插件库,因此使用起来非常方便,跟其他插件库一样先引入,然后使用即可;url_launcher支持跳转默认浏览器打开URL、拨打电话、短信、打开微信或QQ、地图等。
使用
1.将url_launcher添加到包的pubspec.yaml文件中构建:
dependencies: url_launcher: ^5.2.5
与其他插件库一样构建完之后,引入使用
import 'package:url_launcher/url_launcher.dart';
2.在默认浏览器中打开URL
主要API为canLaunch、launch,插件已经封装好了底层源码,实际上也是居于Android和iOS与原生交互封装的;所以我们在使用上,只用到canLaunch、launch方法就够了。
如下是跳到默认浏览器打开url的实例:
_launchURL() async {
const url = 'https://flutter.dev';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
先通过canLaunch判断url是否可以正常调用,如果可以,则执行launch(url)打开url,而实例中的url是https(http也一样),则在默认浏览器中打开。
3其他
1.拨打电话:
用法和打开默认浏览器差不多,不一样的地方就是url协议,协议格式:tel:
例如 url = 'tel:13800138000';
_launchURL() async {
const url = 'tel:13800138000';
if (await canLaunch(url)) {
await launch(url);
} else {
throw '不支持拨打电话';
}
}
2.发送短信:
协议格式:sms:
例如 url = 'sms:13800138000';
_launchURL() async {
const url = 'sms:13800138000';
if (await canLaunch(url)) {
await launch(url);
} else {
throw '不支持发送短信';
}
}
3.发送邮件:
协议格式:mailto:?subject=&body=
例如 url = 'mailto:superluo666@gmail.com?subject=Test&body=测试跳转发送邮件';
_launchURL() async {
const url = 'mailto:superluo666@gmail.com?subject=Test&body=测试跳转发送邮件';
if (await canLaunch(url)) {
await launch(url);
} else {
throw '不支持发送邮件';
}
}
4.其他跳转协议:
如跳转微信、QQ、高德地图等,都是改变相应的url协议地址即可,跳转原理参照原生开发使用的url scheme,比如一些常用的
微信: weixin://
京东: openapp.jdmoble://
淘宝: taobao://
Chrome: googlechrome://
百度地图: baidumap://
高德地图:androidamap://、iosamap://
5.demo效果:
本文GitHub Demo地址:
https://github.com/ChessLuo/flutter_study_app