Flutter邮件OTP认证插件email_otp_auth的使用
Flutter邮件OTP认证插件email_otp_auth的使用
📧 Email OTP Auth
电子邮件基于的OTP认证插件,允许开发者发送6位数的OTP到用户的邮箱并验证它以实现无缝的邮箱认证。适用于需要邮箱验证的应用。
🌟 特性
- ✨ 发送OTP:生成并发送一个6位数的OTP到指定的邮箱地址。
- ✅ 验证OTP:验证输入的OTP以确认邮箱的真实性。
- ⚠️ 有效期:OTP将在5分钟后过期。
🚀 安装
在pubspec.yaml
文件中添加以下内容:
dependencies:
email_otp_auth: ^1.0.0
然后运行:
flutter pub get
📲 使用
导入包
import 'package:email_otp_auth/email_otp_auth.dart';
发送和验证OTP
import 'package:flutter/material.dart';
import 'package:email_otp_auth/email_otp_auth.dart';
void main() async {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
[@override](/user/override)
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
// 控制器声明
TextEditingController emailController = TextEditingController();
TextEditingController otpController = TextEditingController();
// 清理文本编辑控制器
[@override](/user/override)
void dispose() {
emailController.dispose();
otpController.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
// ----------------------
// 发送OTP的方法
// ----------------------
Future<void> sendOtp() async {
try {
// 显示 CircularProgressIndicator。
showDialog(
context: context,
builder: (context) {
return const Center(
child: CircularProgressIndicator(),
);
},
);
// 获取sendOTP方法的响应。
var res = await EmailOtpAuth.sendOTP(email: emailController.text);
// 弹出CircularProgressIndicator。
if (context.mounted {
Navigator.of(context).pop();
}
// 如果响应[message == "Email Send"]则...
if (res["message"] == "Email Send" && context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text("OTP Send Successfully ✅"),
),
);
}
// 否则显示无效的邮箱地址。
else {
if (context.mounted {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text("Invalid E-Mail Address ❌"),
),
);
}
}
}
// 错误处理
catch (error {
throw error.toString();
}
}
// ------------------------
// 验证OTP的方法
// ------------------------
Future<void> verifyOTP() async {
try {
// 显示 CircularProgressIndicator。
showDialog(
context: context,
builder: (context) {
return const Center(
child: CircularProgressIndicator(),
);
},
);
// 获取sendOTP方法的响应。
var res = await EmailOtpAuth.verifyOtp(otp: otpController.text);
// 弹出CircularProgressIndicator。
if (context.mounted {
Navigator.of(context).pop();
}
// 如果响应[message == "OTP Verified"]则...
if (res["message"] == "OTP Verified" && context.mounted {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text("OTP verified ✅"),
),
);
}
// 如果响应[data == "Invalid OTP"]则...
else if (res["data"] == "Invalid OTP" && context.mounted {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text("Invalid OTP ❌"),
),
);
}
// 如果响应[data == "OTP Expired"]则...
else if (res["data"] == "OTP Expired" && context.mounted {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text("OTP Expired ⚠️"),
),
);
}
// 否则返回无操作。
else {
return;
}
} catch (error {
throw error.toString();
}
}
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.deepPurple[2undred],
title: const Text('Email OTP Auth'),
centerTitle: true,
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextFormField(
controller: emailController,
decoration: InputDecoration(
hintText: "E-mail",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
),
),
),
const SizedBox(height: 10),
ElevatedButton(
onPressed: sendOtp,
child: const Text('Send OTP'),
),
const SizedBox(height: 220),
TextFormField(
controller: otpController,
decoration: InputDecoration(
hintText: "OTP",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
),
),
),
const SizedBox(height: 10),
ElevatedButton(
onPressed: verifyOTP,
child: const Text('Verify OTP'),
),
],
),
),
),
);
}
}
更多关于Flutter邮件OTP认证插件email_otp_auth的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter邮件OTP认证插件email_otp_auth的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用 email_otp_auth
插件在 Flutter 中实现邮件 OTP 认证的示例代码。这个插件允许你发送 OTP(一次性密码)到用户的电子邮件地址,并验证该 OTP。
首先,你需要在 pubspec.yaml
文件中添加 email_otp_auth
依赖:
dependencies:
flutter:
sdk: flutter
email_otp_auth: ^最新版本号 # 请替换为最新的版本号
然后运行 flutter pub get
来获取依赖。
接下来是一个完整的示例代码,展示了如何使用 email_otp_auth
插件发送 OTP 并验证 OTP。
import 'package:flutter/material.dart';
import 'package:email_otp_auth/email_otp_auth.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final EmailOtpAuth _emailOtpAuth = EmailOtpAuth();
String _email = '';
String _otp = '';
String _status = '';
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Email OTP Auth Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextField(
decoration: InputDecoration(labelText: 'Email'),
onChanged: (value) => setState(() => _email = value),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () async {
setState(() => _status = 'Sending OTP...');
try {
await _emailOtpAuth.sendOtp(_email);
setState(() => _status = 'OTP Sent!');
} catch (e) {
setState(() => _status = 'Failed to send OTP: $e');
}
},
child: Text('Send OTP'),
),
SizedBox(height: 16),
TextField(
decoration: InputDecoration(labelText: 'OTP'),
keyboardType: TextInputType.number,
onChanged: (value) => setState(() => _otp = value),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () async {
setState(() => _status = 'Verifying OTP...');
try {
bool isVerified = await _emailOtpAuth.verifyOtp(_email, _otp);
setState(() => _status = isVerified ? 'OTP Verified!' : 'Invalid OTP');
} catch (e) {
setState(() => _status = 'Failed to verify OTP: $e');
}
},
child: Text('Verify OTP'),
),
SizedBox(height: 16),
Text(
_status,
style: TextStyle(fontSize: 18, color: Colors.red),
),
],
),
),
),
);
}
}
在这个示例中:
- 我们创建了一个简单的 Flutter 应用,包含两个
TextField
用于输入电子邮件和 OTP。 - 使用
EmailOtpAuth
类的sendOtp
方法发送 OTP 到指定的电子邮件地址。 - 使用
verifyOtp
方法验证用户输入的 OTP。 - 状态
_status
用于显示操作的结果(如 “OTP Sent!”、“OTP Verified!” 或错误信息)。
请注意,这个插件的实际实现可能需要一些后端服务来发送和验证 OTP。你可能需要配置 SMTP 服务器或其他邮件服务来发送邮件。此外,由于 OTP 的安全性和敏感性,确保在生产环境中使用安全的存储和传输机制。
这个示例只是一个基础实现,你可能需要根据实际需求进行进一步的调整和优化。