Search packages, repositories and app categories

mask_text_input_formatter cover
Package detailsv2.9.0

mask_text_input_formatter

The package provides TextInputFormatter for TextField and TextFormField which format the input by a given mask.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
590K
Likes
1.3K
Pub points
160

Install package

flutter pub add mask_text_input_formatter

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The mask_text_input_formatter package provides a TextInputFormatter for Flutter's TextField and TextFormField widgets, enabling real-time input formatting using customizable masks. It helps users enter data like phone numbers, dates, or IDs in a structured way by automatically inserting separators and enforcing format rules as they type. The formatter supports dynamic masks and handles cursor positioning correctly across platforms. It is ideal for forms requiring consistent input patterns without manual validation.

Use cases

  • Phone number input with country code formatting
  • Date entry with DD/MM/YYYY mask
  • Credit card number formatting with spaces
  • Custom numeric or alphanumeric pattern inputs
  • Form fields requiring strict data structure

Key features

  • Real-time input masking
  • Support for dynamic and static masks
  • Correct cursor positioning during editing
  • Cross-platform compatibility (Android, iOS, Web, macOS, Windows, Linux)
  • Easy integration with TextField and TextFormField

Suitable for

  • Form builders needing structured input
  • Internationalization-ready input fields
  • Data collection apps with strict format requirements
  • User-friendly data entry interfaces
  • Developers seeking minimal validation logic

Considerations

  • May require careful mask definition to avoid unexpected behavior
  • Can interfere with copy-paste operations if not configured properly
  • Limited support for complex conditional masks
  • Performance impact on high-frequency input scenarios
  • Not suitable for non-text input types

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

mask_text_input_formatter

Version Build Status codecov GitHub license

The package provides TextInputFormatter for TextField and TextFormField which format the input by a given mask.

logo

Example

Check 'example' folder for code sample

example

Usage

  1. Follow the install guide

  2. Import the library:

import 'package:mask_text_input_formatter/mask_text_input_formatter.dart';
  1. Create mask formatter:
var maskFormatter = new MaskTextInputFormatter(
  mask: '+# (###) ###-##-##', 
  filter: { "#": RegExp(r'[0-9]') },
  type: MaskAutoCompletionType.lazy
);
  1. Set it to text field:
TextField(inputFormatters: [maskFormatter])

Get value

Get masked text:

print(maskFormatter.getMaskedText()); // -> "+0 (123) 456-78-90"

Get unmasked text:

print(maskFormatter.getUnmaskedText()); // -> 01234567890

Change the mask

You can use the updateMask method to change the mask after the formatter was created:

var textEditingController = TextEditingController(text: "12345678");
var maskFormatter = new MaskTextInputFormatter(mask: '####-####', filter: { "#": RegExp(r'[0-9]') });

TextField(controller: textEditingController, inputFormatters: [maskFormatter])  // -> "1234-5678"

textEditingController.value = maskFormatter.updateMask(mask: "##-##-##-##"); // -> "12-34-56-78"

Categories

Source repository

Projects using this package

Rankings