Text_Input_formatter

Another pure dart package for masked text. Implemented as TextInputFormatter Seems to be composable and universal.

Getting Started

There are two properties to pass into constuructor:

  1. mask (not named);
  2. escapeChar - if you need to change the default one ('_')

And useful method getEscapedString. TextController will return masked value So it's a handy converter.

With this piece of code:

import 'package:text_input_mask_formatter/text_input_mask_formatter.dart';

class App extends StatefulWidget {
  AppState createState() => new AppState();
}

class AppState extends State<App> {
  final maskFormatter = MaskTextInputFormatter('+1 (___) ___-__-__');

  String inputValue = '';
  String unmaskedInputValue = '';
  _onTextChange(String s) {
    setState(() {
      inputValue = s;
      unmaskedInputValue = maskFormatter.getEscapedString(s);
    });
  }

  @override
  Widget build(BuildContext context) => 
    MaterialApp(
      title: 'Flutter masked input',
      home: Scaffold(
        body: TextField(
          onChanged: _onTextChange,
          inputFormatters: [
            WhitelistingTextInputFormatter.digitsOnly,
            maskFormatter
          ],
            decoration: InputDecoration(
              hintText: '+1 (___) ___-__-__'
            ),
          )
    );
}

You'll get quite good looking, functional and composable way to solve the issue (at least nicer than here).

Happy coding!

Libraries

text_input_mask_formatter

Dart

dart:ui
Built-in types and core primitives for a Flutter application. [...]

Core

dart:async
Support for asynchronous programming, with classes such as Future and Stream. [...]
dart:collection
Classes and utilities that supplement the collection support in dart:core. [...]
dart:convert
Encoders and decoders for converting between different data representations, including JSON and UTF-8. [...]
dart:core
Built-in types, collections, and other core functionality for every Dart program. [...]
dart:developer
Interact with developer tools such as the debugger and inspector. [...]
dart:math
Mathematical constants and functions, plus a random number generator. [...]
dart:typed_data
Lists that efficiently handle fixed sized data (for example, unsigned 8 byte integers) and SIMD numeric types. [...]

VM

dart:io
File, socket, HTTP, and other I/O support for non-web applications. [...]
dart:isolate
Concurrent programming using isolates: independent workers that are similar to threads but don't share memory, communicating only via messages. [...]