pinput_plus 1.0.4
pinput_plus: ^1.0.4 copied to clipboard
Flexible, customizable PIN/OTP input for Flutter with themes, masking, and validation—ideal for login, 2FA, and verification flows on mobile, desktop and web.
pinput_plus #
A Flutter package providing a highly customizable PIN/OTP input widget.
This package is a maintained fork inspired by the original pinput package, with updates and fixes tailored for our use case.
Features #
- Separator customization
- Animated decoration switching
- Form validation
- SMS autofill (iOS/Android)
- Custom cursor with animation
- Clipboard detection
- Obscuring character/widget
- Haptic feedback
- Works with native or custom keyboards
Separator customization #
Pinput Plus offers flexible control over separators between fields via separator and separatorPositions:
separator: a builderWidget? Function(int index)that returns a widget inserted between fields at the given insertionindex.separatorPositions: optional list of insertion positions. By default, a separator is inserted between every adjacent field.
Examples:
Pinput(
length: 6,
// Insert a fixed gap between every field
separator: (index) => const SizedBox(width: 12),
)
Pinput(
length: 6,
// Group as 3-3 with a styled vertical divider in the middle
separatorPositions: const [3],
separator: (index) => Container(
width: 1,
height: 24,
margin: const EdgeInsets.symmetric(horizontal: 8),
color: Colors.grey.shade400,
),
)
Pinput(
length: 6,
// Return different separators by index for fine-grained control
separator: (index) {
if (index == 3) {
return const SizedBox(width: 20);
}
return const SizedBox(width: 8);
},
)
Installation #
dependencies:
pinput_plus: ^1.0.0
Usage #
import 'package:flutter/material.dart';
import 'package:pinput_plus/new_pinput.dart';
class Example extends StatelessWidget {
const Example({super.key});
@override
Widget build(BuildContext context) {
final controller = TextEditingController();
return Center(
child: Pinput(
length: 6,
controller: controller,
onCompleted: (code) => debugPrint('Code: $code'),
),
);
}
}
Example App #
See the example/ directory for a minimal Flutter app demonstrating usage.
License #
MIT. See LICENSE.
Acknowledgements #
Based on and inspired by the original pinput / new_pinput packages and contributors.