Flutter 打开外部第三方应用:url_launcher 插件的使用

https://pub.flutter-io.cn/packages/url_launcher/versions
pubspec.yaml 文件中添加dev_dependencies:flutter_test:sdk: flutterurl_launcher: ^6.0.10

Scaffold中 SnackBar的使用

// 需要设置Scaffold的key才能弹出SnackBar
return Scaffold(key: _scaffoldkey,//appBar: AppBar(title: Text(title),),body: ...,);

IOS 中需要添加白名单

Scheme 跳转协议:

  • 如跳转微信、QQ、高德地图等,都是改变相应的url协议地址即可,跳转原理参照原生开发使用的url scheme,比如一些常用的
  • 微信: weixin://
  • 京东: openapp.jdmoble://
  • 淘宝: taobao://
  • Chrome: googlechrome://
  • 百度地图: baidumap://
  • 高德地图:androidamap://、iosamap://

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';class OpenApplication extends StatelessWidget {List<Map> buttons = [{'title': '打开浏览器', 'scheme': 'https://www.baidu.com'},{'title': '打开地图', 'scheme': 'geo:52.32.4.917'},{'title': '打开微信', 'scheme': 'weixin://'},{'title': '打开京东', 'scheme': 'openapp.jdmoble://'},{'title': '打开淘宝', 'scheme': 'taobao://'},{'title': '打开百度地图', 'scheme': ' baidumap://'},];// 需要设置Scaffold的key才能弹出SnackBarvar _scaffoldkey = GlobalKey<ScaffoldState>();@overrideWidget build(BuildContext context) {String title = (ModalRoute.of(context)!.settings.arguments as Map)['desc'];// TODO: implement buildreturn Scaffold(key: _scaffoldkey,appBar: AppBar(title: Text(title),),body: Column(children: [Column(children: buttons.map((item) => _launchButton(title: item['title'],scheme: item['scheme'],context: context)).toList(),),// FlatButton(//     onPressed: () {//       print('SnackBar');//       // final snackBar =//       //     new SnackBar(content: new Text('这是一个SnackBar'));//       // Scaffold.of(context).showSnackBar(snackBar);//       _scaffoldkey.currentState!.showSnackBar(//           SnackBar(content: new Text('这是一个SnackBar')));//     },//     child: Text('SnackBar'))],));}void _launchURL() async {const url = 'https://baidu.com';if (await canLaunch(url)) {await launch(url);} else {}}void _launchMap() async {//androidconst url = 'geo:52.32.4.917'; //App 提供的 schemaif (await canLaunch(url)) {await launch(url);} else {}}Widget _launchButton({required String title,required String scheme,required BuildContext context}) {return Container(child: FlatButton(onPressed: () {_launchScheme(scheme: scheme, context: context);},child: Container(margin: EdgeInsets.only(top: 18),width: double.infinity,height: 50,decoration: BoxDecoration(color: Color(0xff88ff22),borderRadius: BorderRadius.circular(25),boxShadow: [BoxShadow(color: Colors.redAccent, blurRadius: 3, offset: Offset(0, 1))],),child: Center(child: Text(title,style: TextStyle(fontSize: 20,color: Colors.black,),),),),),);}void _launchScheme({required String scheme, required BuildContext context}) async {if (await canLaunch(scheme)) {await launch(scheme);} else {print('不支持打开');// 需要设置Scaffold的key才能弹出SnackBar_scaffoldkey.currentState!.showSnackBar(SnackBar(content: new Text('无法打开')));// Scaffold.of(context).showSnackBar(SnackBar(//   content: Text('老孟,一枚有态度的程序员'),// ));}}
}

Flutter 打开外部第三方应用相关推荐

  1. Flutter 插件url_launcher简介及使用,打开外部浏览器,拨打电话,发送短信,打开微信,支付宝,qq等

    url_launcher 插件名称:url_launcher 使用Demo import 'package:flutter/material.dart'; import 'package:url_la ...

  2. Androd开发之通过ComponentName和setComponent以及scheme打开外部应用 | 打开任意页面 | 打开指定页面

    咱们老套路先看下效果图: 如果公司给你这个需求,让你们公司APP打开第三方APP进行别的操作,类似微信支付,你的APP打开微信的支付页面这个需求.咱们就可以用今天的ComponentName来实现这个 ...

  3. uniapp打开外部应用如:浏览器、淘宝、 微信方法

    我们在开发 App 应用中,经常会遇到打开第三方程序的场景,比如打开手机淘宝.通过第三方浏览器打开一个 url 等等. App不像网页可以使用http超链接互相跳转,但手机os设计了scheme机制, ...

  4. Flutter 启动外部浏览器

    引入url_launcher插件 pubspec.yaml文件中引入: dependencies:url_launcher: ^5.1.2 作用及使用 在应用中打开外部浏览器 参考网址:url_lau ...

  5. flutter 常用的第三方组件

    引用文章链接: https://www.jianshu.com/p/a523e5f131b2 1.格式化日期时间组件:https://pub.dev/packages/date_format 2.日期 ...

  6. primefaces_PrimeFaces:在动态生成的对话框中打开外部页面

    primefaces 我已经在即将出版的PrimeFaces Cookbook版本2中写过一篇食谱的博客. 在这篇文章中,我想发表第二篇关于一个名为Dialog Framework的小型框架的文章. ...

  7. PrimeFaces:在动态生成的对话框中打开外部页面

    我已经在即将出版的PrimeFaces Cookbook 2版中写了一篇关于食谱的博客. 在这篇文章中,我想发表第二篇关于一个名为Dialog Framework的小型框架的文章. 我个人喜欢它,因为 ...

  8. notebook打开外部文件_CAD外部参照真是个好东西!

    好课推荐: 零基础CAD:点我CAD室内:点我 周站长CAD:点我CAD机械:点我 Bim教程:点我CAD建筑:点我CAD三维:点我全屋定制:点我 ps教程:点我苹果版CAD:点我 3dmax教程:点 ...

  9. PyQt5在对话框中打开外部链接的方法

    利用PyQt5部分控件的Link属性链接 PyQt5有几个控件带有 setOpenExternalLinks , 如 QLabel.QTextLabel . QTextBrowser 等 当 setO ...

最新文章

  1. 《python核心编程第二版》第5章习题
  2. 混合开发之phonegap开发相关知识解析
  3. 现行的web开发框架分析
  4. ***快速理解Docker - 容器级虚拟化解决方案
  5. 在visual studio code中配置python以及解决中文乱码问题
  6. 042 实例10-文本词频统计
  7. 关于树莓派(一):如何让树莓派和笔记本直连SSH
  8. 计算机中的前端和后端岗位,前端工程师的岗位职责
  9. 百度将于今年下半年推出“哼唱搜索”
  10. 基础篇:深入解析JAVA注解机制
  11. 智云健康上市在即:长期亏损,美年健康俞熔已退出,未来难言乐观
  12. H. Maximal AND
  13. php ecos框架,GitHub - shopex/luban-desktop: A PHP Framework For Luban Web Artisans
  14. 385高校毕业设计选题
  15. 在VS Code中开启gdb的pretty-printer功能
  16. [R语言]1. R语言中R包下载存储位置和安装位置
  17. Ad hoc网络路由协议概述4——按需路由协议(2)AODV协议 (Ad-hoc on-demand distance vector algorithm protocol)
  18. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)四 存储提到的内容的次数
  19. VMware Workstation10虚拟机与Windows10专业版的兼容性问题
  20. 程序员用Python分析徐峥,竟研究出《我不是药神》30亿票房真正秘诀!

热门文章

  1. linux查看linux版本,内核版本,系统位数,gcc版本,Ubuntu下查看linux版本,内核版本,系统位数,gcc版本...
  2. 我有一个梦,袁隆平!
  3. 期货交易怎么买空(期货怎么买做空)
  4. 专题 | Innovus 2020: 创新,永无止境
  5. 计算机一级B考试总结500字,期中考试反思作文500字
  6. HTTP请求的响应头部Vary的理解
  7. UEditor图片居中问题
  8. ESP8266 12F 点灯科技APP 控制两个舵机
  9. 托科技的福,学不好外语就别学了!| 技术前沿洞察
  10. 高中数学:求数列通项公式的十一种方法(方法全,例子全,归纳细)