PinOtpField class

A customizable PIN/OTP input widget that allows input of fixed-length numeric codes.

This widget creates individual text fields for each character of the PIN/OTP. It supports customization of the number of fields, obscuring text (for PIN privacy), customizable decoration for each field, and a callback when input is complete.

The input fields automatically move focus to the next field upon entry and notify when the entire PIN/OTP is entered.

Uses the OtpFieldDecorator abstraction to style each input field flexibly for boxed, circular, underline, or custom appearances.

Inheritance

Constructors

PinOtpField({Key? key, required int length, required OtpFieldDecorator decorator, bool obscure = false, String hintChar = '', String? validator(String value)?, TextStyle errorStyle = const TextStyle(color: Colors.red, fontSize: 14), required ValueChanged<String> onCompleted})
const

Properties

decorator OtpFieldDecorator
A decorator instance that defines the styling of each individual field.
final
errorStyle TextStyle
Style for the error message text.
final
hashCode int
The hash code for this object.
no setterinherited
hintChar String
Character to show as the hint when the field is empty.
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
length int
Number of characters (fields) in the PIN/OTP code.
final
obscure bool
Whether the input text should be obscured (like password fields).
final
onCompleted ValueChanged<String>
Callback invoked when all PIN/OTP fields are filled.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
validator String? Function(String value)?
Optional validator for the entered code. Returns error message if invalid.
final

Methods

createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → _PinOtpFieldState
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited