admin管理员组文章数量:1026989
url_lancher
通过url_lancher
插件,Flutter可以通过URL跳转浏览器、电话、邮件等三方native应用,url_lancher
同时支持Android和iOS上的使用
https://pub.dev/packages/url_launcher
可以处理的URL种类如下:
类型 | URL | 例子 |
---|---|---|
打开浏览器 | http:<URL> | http://flutter.dev |
拨打电话 | mailto:<address>?subject=<subject>&body=<body> | mailto:foo@example?subject=Title&body=Hello! |
发送邮件 | tel:<phone_number> | tel:+12223334444 |
发送SMS | sms:<phone_number> | sms:2223334444 |
Sample
通过一个简单的例子验证一下插件功能:
pubspec.yaml
中添加依赖:
dependencies:
url_launcher: ^5.2.7
实现代码如下:
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() => runApp(
MaterialApp(
home: MyApp(),
),
);
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _State();
}
}
class _State extends State<MyApp> {
var _status = 'Ready';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('URL Test'),
),
body: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
RaisedButton(
child: Text('Website'),
onPressed: () {
var url = 'http://flutter.dev';
_launchUrl('$url');
},
),
RaisedButton(
child: Text('Email'),
onPressed: () {
var email = 'test@example';
var subject = Uri.encodeComponent('Hello');
var body = Uri.encodeComponent('This is a test.');
var url = 'mailto:$email?subject=$subject&body=$body';
print(url);
_launchUrl(url);
},
),
RaisedButton(
child: Text('Phone'),
onPressed: () {
var tel = '+12345678901';
_launchUrl('tel:$tel');
},
),
RaisedButton(
child: Text('SMS'),
onPressed: () {
var tel = '2345678901';
_launchUrl('sms:$tel');
}),
Text(_status)
],
),
),
);
}
_launchUrl(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
setState(() {
_status = 'Unable to launch url $url';
});
}
}
}
通过launch()
,用对应的应用打开URL。canLaunch()
可以用来检查当前环境是否有可以处理URL的应用,如果没有则返回false
url_lancher
通过url_lancher
插件,Flutter可以通过URL跳转浏览器、电话、邮件等三方native应用,url_lancher
同时支持Android和iOS上的使用
https://pub.dev/packages/url_launcher
可以处理的URL种类如下:
类型 | URL | 例子 |
---|---|---|
打开浏览器 | http:<URL> | http://flutter.dev |
拨打电话 | mailto:<address>?subject=<subject>&body=<body> | mailto:foo@example?subject=Title&body=Hello! |
发送邮件 | tel:<phone_number> | tel:+12223334444 |
发送SMS | sms:<phone_number> | sms:2223334444 |
Sample
通过一个简单的例子验证一下插件功能:
pubspec.yaml
中添加依赖:
dependencies:
url_launcher: ^5.2.7
实现代码如下:
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() => runApp(
MaterialApp(
home: MyApp(),
),
);
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _State();
}
}
class _State extends State<MyApp> {
var _status = 'Ready';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('URL Test'),
),
body: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
RaisedButton(
child: Text('Website'),
onPressed: () {
var url = 'http://flutter.dev';
_launchUrl('$url');
},
),
RaisedButton(
child: Text('Email'),
onPressed: () {
var email = 'test@example';
var subject = Uri.encodeComponent('Hello');
var body = Uri.encodeComponent('This is a test.');
var url = 'mailto:$email?subject=$subject&body=$body';
print(url);
_launchUrl(url);
},
),
RaisedButton(
child: Text('Phone'),
onPressed: () {
var tel = '+12345678901';
_launchUrl('tel:$tel');
},
),
RaisedButton(
child: Text('SMS'),
onPressed: () {
var tel = '2345678901';
_launchUrl('sms:$tel');
}),
Text(_status)
],
),
),
);
}
_launchUrl(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
setState(() {
_status = 'Unable to launch url $url';
});
}
}
}
通过launch()
,用对应的应用打开URL。canLaunch()
可以用来检查当前环境是否有可以处理URL的应用,如果没有则返回false
版权声明:本文标题:Flutter启动浏览器打开URL 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1726854227a674202.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论