Flutter一次性密码(OTP)显示插件custom_otp_modal的使用

Flutter一次性密码(OTP)显示插件custom_otp_modal的使用

本Flutter插件提供了一个可自定义的一次性密码(OTP)模态框,用于输入验证。它支持动态设置OTP长度、通过单个TextEditingController实现流畅输入以避免键盘闪烁,并且可以灵活格式化OTP输入。该模态框内置了验证功能,提供了成功和错误弹窗,并且易于集成到任何Flutter应用中。

特性

  • 动态配置OTP长度
  • 使用单个TextEditingController实现平滑输入
  • 自定义成功和错误消息
  • 简单易用,适合快速集成到现有项目中

使用示例

以下是一个完整的示例,展示如何在Flutter应用中使用custom_otp_modal插件。

示例代码

import 'package:custom_otp_modal/custom_otp_modal.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'OTP Modal Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  // 显示OTP模态框
  Future<void> showOtp(BuildContext context) async {
    // 初始化OTP模态框
    OtpModal otpModal = OtpModal(
      context: context, // 上下文
      keyboardType: TextInputType.number, // 键盘类型
      backgroundColor: Colors.blue, // 背景颜色
      textColor: Colors.white, // 文本颜色
      buttonColor: Colors.white, // 按钮背景颜色
      borderColor: Colors.blue, // 边框颜色
      titleTextStyle: const TextStyle(color: Colors.white, fontSize: 18), // 标题样式
      contentTextStyle: const TextStyle(color: Colors.white, fontSize: 16), // 内容样式
      buttonTextStyle: const TextStyle(color: Colors.blue, fontSize: 16), // 按钮文本样式
      otpTtl: 60, // OTP有效时间(秒)
    );

    // 显示OTP模态框并获取用户输入
    String? otpValue = await otpModal.show();

    // 验证用户输入
    if (otpValue != null && otpValue == "123456") {
      // 输入正确时显示成功提示
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('OTP Verified Successfully!')),
      );
    } else {
      // 输入错误时显示失败提示
      ScaffoldMessenger.of(context).showSnackBar(
        const SnackBar(content: Text('OTP Verification Failed!')),
      );
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('OTP Modal Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            showOtp(context); // 点击按钮时显示OTP模态框
          },
          child: const Text('Show OTP Modal'),
        ),
      ),
    );
  }
}
1 回复

更多关于Flutter一次性密码(OTP)显示插件custom_otp_modal的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中,如果你想实现一次性密码(OTP)显示的模态对话框,可以使用自定义插件 custom_otp_modal。以下是如何使用该插件的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 custom_otp_modal 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  custom_otp_modal: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 custom_otp_modal 插件。

import 'package:custom_otp_modal/custom_otp_modal.dart';

3. 使用 CustomOtpModal

你可以使用 CustomOtpModal 来显示一个 OTP 输入模态对话框。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:custom_otp_modal/custom_otp_modal.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Custom OTP Modal Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              _showOtpModal(context);
            },
            child: Text('Show OTP Modal'),
          ),
        ),
      ),
    );
  }

  void _showOtpModal(BuildContext context) {
    CustomOtpModal.show(
      context,
      length: 6, // OTP 的长度
      onCompleted: (String otp) {
        // 当用户输入完整的 OTP 时调用
        print('OTP entered: $otp');
        // 你可以在这里处理 OTP,例如验证或提交
      },
      onCancelled: () {
        // 当用户取消输入时调用
        print('OTP input cancelled');
      },
    );
  }
}

4. 自定义 CustomOtpModal

CustomOtpModal 提供了一些可选的参数来自定义模态对话框的外观和行为。以下是一些常用的参数:

  • length: OTP 的长度,默认为 6。
  • onCompleted: 当用户输入完整的 OTP 时调用的回调函数。
  • onCancelled: 当用户取消输入时调用的回调函数。
  • title: 模态对话框的标题。
  • description: 模态对话框的描述文本。
  • inputDecoration: 输入框的装饰。
  • buttonText: 确认按钮的文本。
  • buttonColor: 确认按钮的颜色。
  • textColor: 文本颜色。

5. 运行应用

现在你可以运行你的 Flutter 应用,点击按钮将会显示一个 OTP 输入模态对话框。用户输入完整的 OTP 后,onCompleted 回调函数将会被调用,你可以在其中处理 OTP。

6. 处理 OTP

onCompleted 回调函数中,你可以处理用户输入的 OTP,例如将其发送到服务器进行验证。

onCompleted: (String otp) {
  // 处理 OTP
  print('OTP entered: $otp');
  // 例如,发送到服务器进行验证
  _verifyOtp(otp);
}

void _verifyOtp(String otp) async {
  // 模拟网络请求
  await Future.delayed(Duration(seconds: 2));
  print('OTP verified: $otp');
}

7. 取消输入

如果用户取消输入,onCancelled 回调函数将会被调用,你可以在其中处理取消逻辑。

onCancelled: () {
  print('OTP input cancelled');
  // 例如,显示一个提示
  ScaffoldMessenger.of(context).showSnackBar(
    SnackBar(content: Text('OTP input cancelled')),
  );
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!