当前位置: 首页 > article >正文

Flutter url_launcher:打开网页、邮件、电话和短信的最佳实践

Flutter url_launcher:打开网页、邮件、电话和短信的最佳实践

如何在 Flutter 中使用 url_launcher 打开网页和发送短信

视频

https://youtu.be/uGT43gZNkyc

https://www.bilibili.com/video/BV1G42EYcE7K/

前言

原文 如何在 Flutter 中使用 url_launcher 打开网页和发送短信

本文介绍了如何在 Flutter 中使用 url_launcher 插件打开网页、拨打电话、发送电子邮件和发送短信,提供详细的步骤和示例代码,帮助开发者提升应用功能。

url_launcher 插件打开网页

参考

  • https://pub.dev/packages/url_launcher

步骤

依赖包:

pubspec.yaml

dependencies:

  url_launcher: ^6.3.0

IOS:

ios/Runner/Info.plist

		<key>LSApplicationQueriesSchemes</key>
		<array>
			<string>https</string>
			<string>sms</string>
			<string>tel</string>
		</array>

加入你需要的协议头 https sms tel

Android:

android/app/src/main/AndroidManifest.xml

    <queries>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="https" />
        </intent>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="tel" />
        </intent>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="sms" />
        </intent>
    </queries>

android 下加入请求头协议。

launchUrl 调用:

  • 打开网址
  Future<void> onOpenUrl(String url, {LaunchMode? mode}) async {
    Uri uri = Uri.parse(url);
    if (!await canLaunchUrl(uri)) {
      throw Exception('Could not launch $url');
    }
    if (!await launchUrl(
      uri,
      mode: mode ?? LaunchMode.platformDefault,
    )) {
      throw Exception('Could not launch $url');
    }
  }
  • 编码参数
  String? encodeQueryParameters(Map<String, String> params) {
    return params.entries
        .map((e) =>
            '${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value)}')
        .join('&');
  }
  • 发送邮件
  Future<void> onSendMail(String to, String subject, String body) async {
    final Uri uri = Uri(
      scheme: 'mailto',
      path: to,
      query: encodeQueryParameters(<String, String>{
        'subject': subject,
        'body': body,
      }),
    );
    if (!await canLaunchUrl(uri)) {
      throw Exception('Could not launch $to');
    }
    if (!await launchUrl(uri)) {
      throw Exception('Could not launch $to');
    }
  }
  • 发送短信
  Future<void> onSendSMS(String phone, String body) async {
    final Uri uri = Uri(
      scheme: 'sms',
      path: phone,
      queryParameters: <String, String>{
        'body': body,
      },
    );
    if (!await canLaunchUrl(uri)) {
      throw Exception('Could not launch sms $phone');
    }
    if (!await launchUrl(uri)) {
      throw Exception('Could not launch sms $phone');
    }
  }

视图代码:

  Widget _buildView() {
    return Center(
      child: Column(
        children: [
          // url
          ElevatedButton(
            onPressed: () => onOpenUrl("https://baidu.com"),
            child: const Text('打开 baidu.com'),
          ),

          // url app 内打开
          ElevatedButton(
            onPressed: () => onOpenUrl(
              "https://baidu.com",
              mode: LaunchMode.inAppWebView,
            ),
            child: const Text('APP 内,打开 baidu.com'),
          ),

          // url app 内打开
          ElevatedButton(
            onPressed: () => onOpenUrl(
              "https://baidu.com",
              mode: LaunchMode.externalApplication,
            ),
            child: const Text('外部,打开 baidu.com'),
          ),

          // email
          ElevatedButton(
            onPressed: () => onSendMail("ducafecat@gmail.com", "邮件标题", "邮件正文"),
            child: const Text('发送邮件'),
          ),

          // sms
          ElevatedButton(
            onPressed: () => onSendSMS("+1234567890", "短信正文"),
            child: const Text('发送短信'),
          ),
        ],
      ),
    );
  }
  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('url_launcher'),
      ),
      body: _buildView(),
    );
  }

代码

本文配套代码

小结

在本文中,我们详细介绍了 Flutter 中 url_launcher 插件的使用方法,包括如何打开网页、拨打电话、发送电子邮件和发送短信。通过具体的示例和最佳实践,开发者可以轻松实现这些功能,从而提升应用的用户体验。希望本文能为你提供实用的参考,帮助你在 Flutter 开发中高效使用 url_launcher 插件。

感谢阅读本文

如果有什么建议,请在评论中让我知道。我很乐意改进。


猫哥 APP

  • SaaS Fast
  • Flutter GetX Generator

flutter 学习路径

  • Flutter 优秀插件推荐
  • Flutter 基础篇1 - Dart 语言学习
  • Flutter 基础篇2 - 快速上手
  • Flutter 实战1 - Getx Woo 电商APP
  • Flutter 实战2 - 上架指南 Apple Store、Google Play
  • Flutter 基础篇3 - 仿微信朋友圈
  • Flutter 实战3 - 腾讯即时通讯 第一篇
  • Flutter 实战4 - 腾讯即时通讯 第二篇

© 猫哥
ducafecat.com

end


http://www.kler.cn/a/350567.html

相关文章:

  • Ubuntu 24.04 LTS 安装 Docker Desktop
  • AUTOSAR从入门到精通-城市NOA(领航辅助驾驶)
  • 【Linux系统编程】—— 深度解析进程等待与终止:系统高效运行的关键
  • 项目太大导致 git clone 失败
  • 2024年博客之星年度评选—创作影响力评审入围名单公布
  • 网络变压器的分类
  • WPF绘制仪表
  • CSS 容器查询一探究竟
  • Mac实用小技巧之如何输入特殊符号
  • 一文通JavaScript事件处理及高级应用(事件冒泡捕获、冒泡与捕获的区别、事件委托)
  • Web集群服务-Nginx
  • log4j添加druid的慢sql日志记录到指定文件
  • 【IRV2】Deepfake video detection using InceptionResnetV2
  • 安卓的漏洞类型和扫描工具
  • vue3中swiper11的使用
  • Unity-Shader简介
  • 滑动窗口经典例题
  • 【CSS in Depth 2 精译_046】7.1 CSS 响应式设计中的移动端优先设计原则(下)
  • 奖金——Topsort
  • 基于STM32的自学习走迷宫智能小车设计
  • 空间限域效应
  • Java基础14-网络编程
  • 基于springboot学生成绩管理系统
  • linux系统,不定时kernel bug :soft lockup的问题
  • android studio导入外部项目
  • 24/10/12 算法笔记 汇聚层