【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配置的跨平台开发者。

相关推荐
打工仔折腾 AI4 分钟前
260+异构同步链路实战:如何用语义化自动翻译破解CDC DDL同步痛点
人工智能·后端·python·自然语言处理·性能优化·langchain·机器翻译
松就是我9029819 分钟前
Agent工具调用实现原理
后端
学习的老炮36 分钟前
反汇编基础速记
后端
步行cgn37 分钟前
@RequestMapping 注解详解
java·后端·spring
骑着蜗牛撵大象32738 分钟前
设备监控数据存与查:Spring Boot 接入 TimescaleDB 超表的完整落地
android·spring boot·后端·springboot·时序数据库·es·设备监控
鶴哥只手遮天38 分钟前
Spring Boot 4.1.1 深度源码解析-第 15 章 · 条件注解体系:全部 `@ConditionalOnXxx` 的实现原理
java·后端·开源
我的div丢了肿么办39 分钟前
go语言安装包详细讲解
后端·go
鶴哥只手遮天39 分钟前
Spring Boot 4.1.1 深度源码解析-第 30 章 · 基础设施能力:SSL Bundle、Task 与虚拟线程、Retry
java·后端·开源
Zenova EdgeOS41 分钟前
Rust TUI 实战:用 ratatui 构建工业边缘终端界面
开发语言·后端·rust·工业网关
imDwAaY43 分钟前
Java String 核心原理:一篇讲透字符串常见面试题
后端