flutter调用系统的打电话、发短信、发邮件功能

介绍

类似于安卓的通过设置intent-action;
点击按钮就能跳转到系统的拨号,发短信,发邮件等界面。
效果如下:
在这里插入图片描述

引入类库

url_launcher: ^5.0.3
get_it: ^1.0.3+2

如下图所示:
在配置文件pubspec.yaml中引入两个类库:
在这里插入图片描述

创建一个服务

TelAndSmsService.dart

import 'package:url_launcher/url_launcher.dart';

class TelAndSmsService {

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

创建一个注册服务的工具类

ServiceLocator.dart

import 'package:get_it/get_it.dart';
import './TelAndSmsService.dart';

GetIt locator = GetIt();
void setupLocator() {
  locator.registerSingleton(TelAndSmsService());
}

应用主入口调用

main.dart

import 'package:flutter/material.dart';
import './view_sample.dart';
import 'ServiceLocator.dart';
void main()  {
// 注册服务
setupLocator();
// 运行主界面
runApp(ViewSample());
}


调用打电话,发短信,发邮件

view_sample.dart

import 'package:flutter/material.dart';
import 'ServiceLocator.dart';
import 'TelAndSmsService.dart';

class   ViewSample extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      title: 'view add or remove',
      theme: ThemeData(
        primaryColor: Colors.green,
      ),
      home: ViewPage(),
    );
  }
}

class ViewPage extends StatefulWidget{
  @override
  ViewPageState createState() => ViewPageState();

}
class ViewPageState extends State<ViewPage>{
  bool toggle = true;
  final TelAndSmsService _service = locator<TelAndSmsService>();
  final String number = "123456789";
  final String email = "12345@example.com";
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('view page'),
      ),
      body: Container(
        child: Column(
          children: <Widget>[
            RaisedButton(
              child: Text("打电话"),
              onPressed: ()=> _service.call(number)
              ,
            ),
            RaisedButton(
              child: Text("发短信"),
              onPressed: ()=> _service.sendSms(number)
            ),
            RaisedButton(
              child: Text("发邮件"),
                onPressed: ()=> _service.sendEmail(email)
            ),
          ],
        ),
      ),
    );
  }
  


}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值