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

相关推荐
码起来呗1 小时前
基于Spring Boot的乡村拼车小程序的设计与实现-项目分享
spring boot·后端·小程序
我命由我123451 小时前
Java 并发编程 - Delay(Delayed 概述、Delayed 实现、Delayed 使用、Delay 缓存实现、Delayed 延迟获取数据实现)
java·开发语言·后端·缓存·java-ee·intellij-idea·intellij idea
我是天龙_绍3 小时前
java 比对两对象大小 重写 comparator
后端
IT_陈寒3 小时前
Python 3.12新特性实测:10个让你的代码提速30%的隐藏技巧 🚀
前端·人工智能·后端
BingoGo3 小时前
从零开始打造 Laravel 扩展包:开发、测试到发布完整指南
后端·php
9号达人3 小时前
普通公司对账系统的现实困境与解决方案
java·后端·面试
golang学习记3 小时前
Go 1.26 新特性:netip.Prefix.Compare —— 标准化 IP 子网排序能力
后端
花落已飘3 小时前
openEuler容器化实践:从Docker入门到生产部署
后端
Cache技术分享3 小时前
233. Java 集合 - 遍历 Collection 中的元素
前端·后端