DecimalTextInputFormatter class

An advanced TextInputFormatter for numeric fields.

Features:

  • Decimal support with precision control via decimalRange (null = unlimited, 0 = integers only, n = up to n fraction digits).
  • Negative number support via allowNegative.
  • Range validation via min / max with live feedback.
  • Live error feedback through errorNotifier.
  • State management integration through valueNotifier (parsed num).

Character-level rules (precision, sign, single decimal point) are enforced hard — invalid keystrokes are rejected. Range rules are enforced soft — the value is still accepted while typing, but errorNotifier is updated so the UI can show an inline error.

final errorText = ValueNotifier<String?>(null);
final value = ValueNotifier<num?>(null);

TextField(
  keyboardType: const TextInputType.numberWithOptions(
    decimal: true,
    signed: true,
  ),
  inputFormatters: [
    DecimalTextInputFormatter(
      decimalRange: 2,
      allowNegative: true,
      min: -50,
      max: 100,
      errorNotifier: errorText,
      valueNotifier: value,
    ),
  ],
);

// Show live error:
ValueListenableBuilder<String?>(
  valueListenable: errorText,
  builder: (_, error, __) => Text(error ?? ''),
);
Inheritance

Constructors

DecimalTextInputFormatter({int? decimalRange = 2, bool allowNegative = false, num? min, num? max, ValueNotifier<String?>? errorNotifier, ValueNotifier<num?>? valueNotifier, String? minErrorText, String? maxErrorText})

Properties

allowNegative → bool
Whether a leading minus sign is allowed.
final
decimalRange → int?
Number of digits allowed after the decimal point.
final
errorNotifier → ValueNotifier<String?>?
Receives the current validation error message (or null when valid).
final
hashCode → int
The hash code for this object.
no setterinherited
max → num?
Inclusive maximum. When the parsed value is above this, errorNotifier is updated with maxErrorText.
final
maxErrorText → String?
Custom message when the value is above max.
final
min → num?
Inclusive minimum. When the parsed value is below this, errorNotifier is updated with minErrorText.
final
minErrorText → String?
Custom message when the value is below min.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
valueNotifier → ValueNotifier<num?>?
Receives the current parsed value (or null when empty/incomplete).
final

Methods

formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) → TextEditingValue
Called when text is being typed or cut/copy/pasted in the EditableText.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

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