根据您正在开发的应用程序类型,您可能希望用户通过按下应用程序中的按钮快速拨打电话或发送消息或电子邮件。这可能是有用的,例如,如果您希望他联系支持热线,或者如果您想让他打电话给商店或餐馆。
添加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链接中找到。
结论
这是一个快速的片段,以便您可以通过颤动的应用程序拨打电话,发送短信和电子邮件。我希望你喜欢这个片段!