An open API service indexing awesome lists of open source software.

https://github.com/flutterbysunny/smart_otp_field

A smart Flutter OTP input package with autofill, paste support, resend timer, obscure text, and customizable themes.
https://github.com/flutterbysunny/smart_otp_field

Last synced: 15 days ago
JSON representation

A smart Flutter OTP input package with autofill, paste support, resend timer, obscure text, and customizable themes.

Awesome Lists containing this project

README

          

# Smart OTP Field

A beautiful, customizable Flutter OTP input package with controller support, theme customization, auto focus handling, completion callbacks, and resend timer.

[![Flutter](https://img.shields.io/badge/Flutter-Package-blue.svg)]()
[![Platform](https://img.shields.io/badge/platform-Android%20%7C%20iOS-green.svg)]()
[![License](https://img.shields.io/badge/license-MIT-orange.svg)]()

---

## โœจ Features

- ๐Ÿ”ข Beautiful OTP input boxes
- ๐ŸŽฏ Auto focus next / previous
- ๐ŸŽ› OTP controller support
- ๐ŸŽจ Custom theme support
- ๐Ÿ“ž `onChanged` callback
- โœ… `onCompleted` callback
- ๐Ÿ”„ Resend timer widget
- ๐Ÿงน Clear OTP programmatically
- ๐Ÿ“ฑ Android & iOS support
- ๐Ÿš€ Easy integration

---

## ๐Ÿ“ฆ Installation

Add dependency in `pubspec.yaml`

```yaml
dependencies:
smart_otp_field_plus: ^1.0.1
```

Run:

```bash
flutter pub get
```

---

## ๐Ÿงฉ Full Example

```dart
import 'package:flutter/material.dart';
import 'package:smart_otp_field_plus/smart_otp_field_plus.dart';

class OtpScreen extends StatelessWidget {
OtpScreen({super.key});

final OtpController controller = OtpController(length: 6);

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("OTP Verification")),
body: Padding(
padding: const EdgeInsets.all(20),
child: Column(
children: [
SmartOtpFieldPlus(
controller: controller,
length: 6,
onCompleted: (otp) {
print("OTP Entered: $otp");
},
),

const SizedBox(height: 20),

ResendTimer(
seconds: 30,
onResend: () {
print("Resend OTP");
},
),

const SizedBox(height: 20),

ElevatedButton(
onPressed: () {
print(controller.value);
},
child: const Text("Submit"),
),
],
),
),
);
}
}
```

---

## โš™ Available Properties

### SmartOtpField

| Property | Type | Default | Description |
|----------|------|---------|-------------|
| `length` | `int` | `6` | OTP box count |
| `controller` | `OtpController?` | `null` | OTP controller |
| `theme` | `OtpTheme` | `default` | Custom UI theme |
| `onChanged` | `ValueChanged?` | `null` | OTP change callback |
| `onCompleted` | `ValueChanged?` | `null` | Called when OTP complete |

---

### OtpController

| Property | Description |
|----------|-------------|
| `value` | Returns OTP string |
| `clear()` | Clears all boxes |
| `isComplete` | Checks OTP completion |
| `dispose()` | Dispose controllers |

---

### OtpTheme

| Property | Description |
|----------|-------------|
| `boxWidth` | OTP box width |
| `boxHeight` | OTP box height |
| `textStyle` | OTP text style |
| `decoration` | Default box decoration |
| `focusedDecoration` | Focused box decoration |

---

## ๐Ÿ“ฑ Platform Support

| Platform | Support |
|----------|---------|
| Android | โœ… |
| iOS | โœ… |

---

## ๐Ÿ“„ License

MIT License

---

## ๐Ÿค Contributing

Pull requests are welcome.

If you find bugs or want improvements, feel free to open an issue.

---

## โญ Support

If you like this package, give it a star on GitHub.