1、 调用系统的打电话、发短信、发邮件功能
1.1 pubspec.yaml
文件中添加 url_launcher
、 get_it
两个插件
url_launcher: ^5.5.0
get_it: ^4.0.4
1.2 封装公共的 创建电话、短信、邮件服务(我是在公共文件 utils.dart 中封装的)
import 'package:url_launcher/url_launcher.dart';
import 'package:get_it/get_it.dart';
/*
* @description: 创建电话、短信、邮件服务
*/
class TelAndSmsService {
/*
* @description: 打电话
* @param {type}
* number 电话号码
*/
void call(String number) => launch("tel:$number");
/*
* @description: 发短信
* @param {type}
* number 电话号码
*/
void sendSms(String number) => launch("sms:$number");
/*
* @description: 发邮件
* @param {type}
* email 邮箱
*/
void sendEmail(String email) => launch("mailto:$email");
}
class GetItClass {
final locator = GetIt.instance;
void setupLocator() {
locator.registerSingleton(TelAndSmsService());
}
}
1.3 应用主入口注册服务
import './utils/utils.dart';
void main(){
// 注册封装的服务
GetItClass().setupLocator();
runApp(new MyApp());
}
1.4 相应的页面调用打电话、发短信、发邮件服务
// 引入依赖包
import 'package:flutter/material.dart';
import 'package:new_flutter/utils/utils.dart';
class PhoneSms extends StatelessWidget {
final TelAndSmsService _service = GetItClass().locator<TelAndSmsService>();
final String number = "19956647149";
final String email = "12345@example.com";
@override
Widget build(BuildContext context) {
return MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: new Text('page Two'),
),
body: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Column(
children: [
RaisedButton(
child: Text("打电话"),
onPressed: ()=> _service.call(number)
),
RaisedButton(
child: Text("发短信"),
onPressed: ()=> _service.sendSms(number)
),
RaisedButton(
child: Text("发邮件"),
onPressed: ()=> _service.sendEmail(email)
)
]
)
)
),
);
}
}
2、 调用系统的复制剪切板功能
2.1 引入依赖包
import 'package:flutter/material.dart';
2.2 复制文本到剪切板
RaisedButton(
child: Text("复制剪切板"),
onPressed: (){
// 复制文本到剪切板方法
Clipboard.setData(ClipboardData(text: 'test-复制剪切板文案'));
}
)
2.3 从剪切板读取文本
Clipboard.getData(Clipboard.kTextPlain).then((value) => {
// value.text 即为复制到剪切板的内容
print('111:${value.text}')
});