Flutter一次性验证码输入插件otp_input_field的使用

Flutter一次性验证码输入插件otp_input_field的使用

一个简化在Flutter应用中集成一次性密码(OTP)输入字段的包。此包提供了易于使用且可自定义的小部件,使用户可以轻松输入OTP。内置验证和灵活的样式选项,您可以轻松提升认证工作流中的用户体验。

特性

  • 允许你以任何方式自定义文本字段的形状。
  • 内置两种常用的PIN样式。
  • 支持遮蔽输入。
  • 支持输入装饰。
  • 支持所有TextField属性。
  • 支持Flutter Web。

安装

安装最新版本的包。

安装步骤

  1. 依赖 在你的包的pubspec.yaml文件中添加以下内容:

    dependencies:
      otp_input_field: 1.0.1
    
  2. 安装 使用命令行安装包:

    $ flutter packages get
    

    或者,你的编辑器可能支持flutter packages get。查阅编辑器文档了解更多信息。

  3. 导入 现在可以在Dart代码中使用:

    import 'package:otp_input_field/otp_input_field.dart';
    

示例用法

示例1

如果你想要一个样式相同或字段为框形的OTP输入框:

OtpTextField(
    numberOfFields: 5, // 设置OTP字段的数量
    borderColor: Color(0xFF512DA8), // 设置边框颜色
    // 设置为true以显示为框形,否则显示为虚线
    showFieldAsBox: true, 
    // 每次输入时运行
    onCodeChanged: (String code) {
        // 处理验证或其他检查
    },
    // 当每个文本字段都填满时运行
    onSubmit: (String verificationCode){
        showDialog(
            context: context,
            builder: (context){
            return AlertDialog(
                title: Text("验证代码"),
                content: Text('输入的代码是 $verificationCode'),
            );
            }
        );
    }, // 结束onSubmit
),

示例2

如果你想要每个字段有不同的样式:

Color accentPurpleColor = Color(0xFF6A53A1);
Color primaryColor = Color(0xFF121212);
Color accentPinkColor = Color(0xFFF99BBD);
Color accentDarkGreenColor = Color(0xFF115C49);
Color accentYellowColor = Color(0xFFFFB612);
Color accentOrangeColor = Color(0xFFEA7A3B);

List<TextStyle?> otpTextStyles = [
    createStyle(accentPurpleColor),
    createStyle(accentYellowColor),
    createStyle(accentDarkGreenColor),
    createStyle(accentOrangeColor),
    createStyle(accentPinkColor),
    createStyle(accentPurpleColor),
];

TextStyle? createStyle(Color color) {
    ThemeData theme = Theme.of(context);
    return theme.textTheme.headline3?.copyWith(color: color);
}

OtpTextField(
    numberOfFields: 6, // 设置OTP字段的数量
    borderColor: accentPurpleColor, // 设置边框颜色
    focusedBorderColor: accentPurpleColor, // 设置焦点时的边框颜色
    styles: otpTextStyles, // 设置每个字段的样式
    showFieldAsBox: false, // 设置为false以显示为虚线
    borderWidth: 4.0, // 设置边框宽度
    // 每次输入时运行
    onCodeChanged: (String code) {
        // 如果需要,处理验证或其他检查
    },
    // 当每个文本字段都填满时运行
    onSubmit: (String verificationCode) {

    }, 
),

更多关于Flutter一次性验证码输入插件otp_input_field的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter一次性验证码输入插件otp_input_field的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


otp_input_field 是一个用于 Flutter 的插件,它允许用户输入一次性验证码(OTP)。这个插件提供了一个美观且易用的界面,通常用于短信验证码、邮箱验证码等场景。以下是如何使用 otp_input_field 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  otp_input_field: ^1.1.0  # 请检查最新版本

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

2. 导入插件

在你的 Dart 文件中导入 otp_input_field 插件:

import 'package:otp_input_field/otp_input_field.dart';

3. 使用 OTP 输入框

你可以在你的 Widget 中使用 OtpTextField 来创建一个 OTP 输入框。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:otp_input_field/otp_input_field.dart';
import 'package:otp_input_field/style.dart';

class OTPInputScreen extends StatefulWidget {
  @override
  _OTPInputScreenState createState() => _OTPInputScreenState();
}

class _OTPInputScreenState extends State<OTPInputScreen> {
  OtpFieldController otpController = OtpFieldController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('OTP Input Field Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            OTPTextField(
              length: 6, // OTP 的长度
              width: MediaQuery.of(context).size.width,
              fieldWidth: 40,
              style: TextStyle(fontSize: 20),
              textFieldAlignment: MainAxisAlignment.spaceAround,
              fieldStyle: FieldStyle.box,
              onCompleted: (pin) {
                print("Completed: " + pin);
              },
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                otpController.set(['1', '2', '3', '4', '5', '6']);
              },
              child: Text('Set OTP'),
            ),
          ],
        ),
      ),
    );
  }
}

4. 参数说明

  • length: OTP 的长度,通常是 4 或 6。
  • width: OTP 输入框的宽度。
  • fieldWidth: 每个输入框的宽度。
  • style: 输入框中文本的样式。
  • textFieldAlignment: 输入框的对齐方式。
  • fieldStyle: 输入框的样式,可以是 FieldStyle.boxFieldStyle.underline
  • onCompleted: 当用户完成输入时触发的回调函数,参数是用户输入的 OTP。

5. 控制 OTP 输入框

你可以使用 OtpFieldController 来控制 OTP 输入框,例如设置 OTP 的值或清空输入框。

OtpFieldController otpController = OtpFieldController();

// 设置 OTP
otpController.set(['1', '2', '3', '4', '5', '6']);

// 清空 OTP
otpController.clear();

6. 运行应用

现在你可以运行你的 Flutter 应用,并在屏幕上看到一个 OTP 输入框。用户可以输入验证码,并且在输入完成后,你可以在 onCompleted 回调中获取到输入的 OTP。

7. 自定义样式

你可以通过调整 fieldStylestyle 等参数来自定义 OTP 输入框的外观。例如,你可以将 fieldStyle 设置为 FieldStyle.underline 来让输入框显示为下划线样式。

OTPTextField(
  length: 4,
  width: MediaQuery.of(context).size.width,
  fieldWidth: 40,
  style: TextStyle(fontSize: 20),
  textFieldAlignment: MainAxisAlignment.spaceAround,
  fieldStyle: FieldStyle.underline,
  onCompleted: (pin) {
    print("Completed: " + pin);
  },
);
回到顶部