生活随笔
收集整理的這篇文章主要介紹了
Flutter 打开外部第三方应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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 打开外部第三方应用的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。