Flutter - 使用url_launcher拨打电话,发送短信和电子邮件

根据您正在开发的应用程序类型,您可能希望用户通过按下应用程序中的按钮快速拨打电话或发送消息或电子邮件。这可能是有用的,例如,如果您希望他联系支持热线,或者如果您想让他打电话给商店或餐馆。

添加url_launcher包

为了完成上述所有操作,我们需要导入一个名为url_launcher的库,您可能已经使用它来从您的flutter应用程序启动safari或chrome上的网站。如果您还没有,请将它添加到我们的pubspec.yaml文件中。

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2
  get_it: ^1.0.3+2
  url_launcher: ^5.0.3

创建呼叫和消息服务

在我们的services文件夹中,让我们创建一个calls_and_messages_service.dart文件。

import 'package:url_launcher/url_launcher.dart';

class CallsAndMessagesService {
  void call(String number) => launch("tel:$number");
  void sendSms(String number) => launch("sms:$number");
  void sendEmail(String email) => launch("mailto:$email");
}

这应该很容易理解,需要注意的是URL格式。

  • tel:后面跟着号码会打开默认的手机应用程序
  • sms:后跟数字将打开默认消息应用程序
  • mailto:然后电子邮件将打开默认的电子邮件应用程序

接下来,我们的service_locator

为了实例化CallsAndMessagesService并让它在我们的应用程序的任何地方快速可用,我们希望使用get_it创建服务定位器。

GetIt locator = GetIt();

void setupLocator() {
  locator.registerSingleton(CallsAndMessagesService());
}

并且不要忘记在main函数中调用setupLocator。

void main() {
  setupLocator();
  runApp(MyApp());
}

获得服务

为了能够访问CallsAndMessagesService,我们使用定位器调用它。

class _MyHomePageState extends State<MyHomePage> {
  final CallsAndMessagesService _service = locator<CallsAndMessagesService>();
  
  final String number = "123456789";
  final String email = "dancamdev@example.com";
  
  ...
}

创建快速UI并调用相应的方法

将它包装起来,让我们为之前实现的功能创建一个包含三个按钮的列。

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('dancamdev'),
      ),
      body: Container(
        width: double.infinity,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          mainAxisSize: MainAxisSize.max,
          children: <Widget>[
            RaisedButton(
              child: Text(
                "call $number",
              ),
              onPressed: () => _service.call(number),
            ),
            SizedBox(height: 20),
            RaisedButton(
              child: Text(
                "message $number",
              ),
              onPressed: () => _service.sendSms(number),
            ),
            SizedBox(height: 20),
            RaisedButton(
              child: Text(
                "email $email",
              ),
              onPressed: () => _service.sendEmail(email),
            ),
          ],
        ),
      ),
    );

GitHub链接为本文中显示的代码

本文中的所有代码都可以在此GitHub链接中找到。

结论

这是一个快速的片段,以便您可以通过颤动的应用程序拨打电话,发送短信和电子邮件。我希望你喜欢这个片段!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Getting Started Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为...
    Eva_chenx阅读 29,058评论 0 14
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,805评论 1 32
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,124评论 0 3
  • 每天都盼望有个好天气,但到了这个时节,加减衣服真的有点尴尬。 其实衣服穿穿脱脱并没什么难度,可是这异样的天气真的让...
    路语旁集阅读 1,917评论 0 0
  • 你知道关于优秀的描述,我最喜欢哪个吗?那是江南的《龙族》里面关于凯撒的描述。“路明非不得不感慨恺撒真是个要强的人,...
    尧小妖阅读 1,384评论 0 0