【Flutter】Flutter 打开第三方应用 ( url_launcher 插件搜索与安装 | url_launcher 插件官方示例 | 打开浏览器 |

Flutter中使用url_launcher插件实现应用间跳转

文章目录

  • 一、url_launcher插件搜索与安装
    • 1、搜索url_launcher插件
    • 2、安装url_launcher插件
  • 二、url_launcher插件官方示例
  • 三、打开浏览器
  • 四、打开第三方应用
  • 五、完整代码示例
  • 六、相关资源

一、url_launcher插件搜索与安装

1、搜索url_launcher插件

url_launcher是Flutter官方提供的用于打开第三方应用的插件。对于iOS开发者来说,在使用这类功能插件时,可以配合AppUploader这样的iOS开发助手工具,它能帮助开发者快速完成iOS应用的打包、上传和发布流程。

在pub.dev搜索并安装url_launcher插件:

arduino 复制代码
https://pub.dev/packages/url_launcher

2、安装url_launcher插件

安装步骤:

  1. 在pubspec.yaml配置文件中添加依赖:
yaml 复制代码
dependencies:
  url_launcher: ^5.7.10
  1. 点击"Pub get"按钮获取插件

  2. 导入头文件:

dart 复制代码
import 'package:url_launcher/url_launcher.dart';

二、url_launcher插件官方示例

dart 复制代码
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
  runApp(Scaffold(
    body: Center(
      child: RaisedButton(
        onPressed: _launchURL,
        child: Text('Show Flutter homepage'),
      ),
    ),
  ));
}

_launchURL() async {
  const url = 'https://flutter.dev';
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}

三、打开浏览器

dart 复制代码
// 打开浏览器按钮
RaisedButton(
  onPressed: () async {
    const url = 'https://blog.csdn.net/shulianghan';
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      throw 'Could not launch $url';
    }
  },
  child: Text("打开浏览器"),
),

四、打开第三方应用

打开第三方应用需要知道该应用的schema或url。对于iOS开发者,使用AppUploader可以方便地测试这些URL Scheme是否正常工作,因为它提供了真机调试和快速打包的功能。

dart 复制代码
// 打开Google地图
RaisedButton(
  onPressed: () async {
    const url = 'geo:116.3,39.95';
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      const url_ios = 'http://maps.apple.com/?ll=116.3,39.95';
      if (await canLaunch(url_ios)) {
        await launch(url_ios);
      } else {
        throw 'Could not launch $url';
      }
    }
  },
  child: Text("打开地图"),
),

五、完整代码示例

dart 复制代码
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

class LauncherPage extends StatefulWidget {
  @override
  _LauncherPageState createState() => _LauncherPageState();
}

class _LauncherPageState extends State<LauncherPage> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "第三方应用跳转",
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        appBar: AppBar(
          title: Text("第三方应用跳转"),
          leading: GestureDetector(
            onTap: (){
              Navigator.pop(context);
            },
            child: Icon(Icons.arrow_back_ios),
          ),
        ),
        body: Container(
          alignment: Alignment.center,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              RaisedButton(
                onPressed: () async {
                  const url = 'https://blog.csdn.net/shulianghan';
                  if (await canLaunch(url)) {
                    await launch(url);
                  } else {
                    throw 'Could not launch $url';
                  }
                },
                child: Text("打开浏览器"),
              ),
              RaisedButton(
                onPressed: () async {
                  const url = 'geo:116.3,39.95';
                  if (await canLaunch(url)) {
                    await launch(url);
                  } else {
                    const url_ios = 'http://maps.apple.com/?ll=116.3,39.95';
                    if (await canLaunch(url_ios)) {
                      await launch(url_ios);
                    } else {
                      throw 'Could not launch $url';
                    }
                  }
                },
                child: Text("打开地图"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

六、相关资源

Flutter开发资源:

iOS开发工具推荐:

对于需要将Flutter应用发布到App Store的开发者,可以使用AppUploader这样的工具来简化iOS应用的打包和上传流程。它能帮助开发者快速完成证书管理、应用打包和App Store Connect上传等操作,特别适合不熟悉Xcode配置的跨平台开发者。

相关推荐
李慕婉学姐7 小时前
Springboot眼镜店管理系统ferchy1l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
暴躁小师兄数据学院8 小时前
【WEB3.0零基础转行笔记】Golang编程篇-第4讲:Go语言中的流程控制
开发语言·后端·golang·web3·区块链
Honmaple8 小时前
openclaw 钉钉 Webhook 完全指南
后端
短剑重铸之日8 小时前
《设计模式》第十篇:三大类型之行为型模式
java·后端·设计模式·责任链模式·访问者模式·行为型模式
独自破碎E8 小时前
Spring Boot测试启动失败:SLF4J日志多实现冲突解决方案
spring boot·后端·log4j
Coder_Boy_8 小时前
企业级项目高并发监控场景-Spring Boot 集成 Graphite & InfluxDB 实战文档
java·spring boot·后端·系统架构
索荣荣21 小时前
Java Session 全面指南:原理、应用与实践(含 Spring Boot 实战)
java·spring boot·后端
千寻技术帮1 天前
10333_基于SpringBoot的家电进存销系统
java·spring boot·后端·源码·项目·家电进存销
dear_bi_MyOnly1 天前
【多线程——线程状态与安全】
java·开发语言·数据结构·后端·中间件·java-ee·intellij-idea
小信丶1 天前
@EnableTransactionManagement注解介绍、应用场景和示例代码
java·spring boot·后端