在现代移动应用中,发送 SMS(短消息服务)是一个常见的功能,尤其是在用户验证或通知方面。本文将介绍如何在 Flutter 应用中实现发送 SMS 的功能。

1. 准备工作

在开始之前,请确保你已经设置了 Flutter 环境,并创建了一个新的 Flutter 项目。

2. 添加依赖

要在 Flutter 中发送 SMS,我们可以使用 sms 插件或者 url_launcher 插件。这里我们将使用 url_launcher 插件,因为它提供了更广泛的功能。

1
flutter pub add url_launcher

pubspec.yaml 文件中添加以下依赖:

1
2
3
4
dependencies:
flutter:
sdk: flutter
url_launcher: ^6.3.1

然后运行命令来安装依赖:

1
flutter pub get

3. 实现发送 SMS 的功能

接下来,我们将在 Flutter 应用中实现发送 SMS 的功能。以下是一个简单的示例:

3.1 导入必要的库

在你的 Dart 文件中,导入 url_launcher 库:

1
2
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

3.2 创建发送 SMS 的函数

创建一个发送 SMS 的函数,使用 url_launcher 来打开默认的短信应用程序:

1
2
3
4
5
6
7
8
9
Future<void> sendSMS(String message, String phone) async {
String smsUrl = 'sms:$phone?body=${Uri.encodeComponent(message)}';

if (await canLaunchUrlString(smsUrl)) {
await launchUrlString(smsUrl);
} else {
throw '无法发送 SMS 到 $phone';
}
}

3.3 构建 UI

在你的 Flutter 应用中,创建一个简单的 UI,用户可以输入电话号码和消息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class SmsSenderApp extends StatelessWidget {
final TextEditingController phoneController = TextEditingController();
final TextEditingController messageController = TextEditingController();

SmsSenderApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('发送 SMS'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
controller: phoneController,
decoration: const InputDecoration(labelText: '电话号码1'),
keyboardType: TextInputType.phone,
),
TextField(
controller: messageController,
decoration: const InputDecoration(labelText: '消息'),
keyboardType: TextInputType.text,
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: () {
sendSMS(messageController.text, phoneController.text);
},
child: const Text('发送 SMS'),
),
],
),
),
),
);
}
}

3.4 运行应用

在你的 main.dart 文件中,运行 SmsSenderApp

1
2
3
void main() {
runApp(SmsSenderApp());
}