advanced_text_input_formatters_codespark 0.0.4 copy "advanced_text_input_formatters_codespark: ^0.0.4" to clipboard
advanced_text_input_formatters_codespark: ^0.0.4 copied to clipboard

A Flutter package with advanced custom TextInputFormatters—simulate typing, block clipboard, allow only palindromes, enforce naming conventions and more.

example/main.dart

import 'package:advanced_text_input_formatters_codespark/controllers/typing_delay_controller.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/camel_case_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/digits_only_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/kebab_case_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/mirror_text_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/no_paste_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/no_repeat_characters_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/only_alphabets_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/palindrome_only_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/pan_card_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/prevent_multiple_spaces_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/replace_whitespace_with_underscore_formatter.dart';
import 'package:advanced_text_input_formatters_codespark/formatters/snake_case_formatter.dart';
import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Text Formatter Demo',
      home: Scaffold(
        appBar: AppBar(title: const Text('Formatter Playground')),
        body: const Padding(
          padding: EdgeInsets.all(16.0),
          child: FormatterDemo(),
        ),
      ),
    );
  }
}

class FormatterDemo extends StatefulWidget {
  const FormatterDemo({super.key});

  @override
  State<FormatterDemo> createState() => _FormatterDemoState();
}

class _FormatterDemoState extends State<FormatterDemo> {
  final TextEditingController _controller = TextEditingController();
  final typingController = TypingDelayController();

  @override
  Widget build(BuildContext context) {
    final keyboardType = PanCardInputHelper.getKeyboardType(_controller.text);
    return ListView(
      children: [
        const SizedBox(height: 20),
        const Text('Pan Card Formatter'),
        TextFormField(
          key: ValueKey(keyboardType), // Rebuild on type change
          controller: _controller,
          decoration: const InputDecoration(
            labelText: 'Enter PAN Card Number',
            border: OutlineInputBorder(),
          ),
          autofocus: true,
          keyboardType: keyboardType,
          inputFormatters: [PanCardInputHelper.formatter],
          validator: (val) => PanCardInputHelper.validate(val ?? ''),
          onChanged: (value) => setState(() {}),
        ),
        const Text('Digits Only'),
        TextField(inputFormatters: [DigitsOnlyFormatter()]),
        const SizedBox(height: 20),
        const Text('Input Mirror'),
        TextField(inputFormatters: [MirrorTextFormatter()]),
        const SizedBox(height: 20),
        const Text('Prevent Repeat Characters'),
        TextField(inputFormatters: [NoRepeatCharactersFormatter()]),
        const SizedBox(height: 20),
        const Text('Block Clipboard (no paste)'),
        TextField(inputFormatters: [NoPasteFormatter()]),
        const SizedBox(height: 20),
        const Text('Only Palindromes'),
        TextField(inputFormatters: [PalindromeOnlyFormatter()]),
        const SizedBox(height: 20),
        const Text('Only Alphabets'),
        TextField(inputFormatters: [OnlyAlphabetsFormatter()]),
        const SizedBox(height: 20),
        const Text('CamelCase'),
        TextField(inputFormatters: [CamelCaseFormatter()]),
        const SizedBox(height: 20),
        const Text('snake_case'),
        TextField(inputFormatters: [SnakeCaseFormatter()]),
        const SizedBox(height: 20),
        const Text('kebab-case'),
        TextField(inputFormatters: [KebabCaseFormatter()]),
        const SizedBox(height: 20),
        const Text('Whitespace → Underscores'),
        TextField(inputFormatters: [WhitespaceToUnderscoreFormatter()]),
        const SizedBox(height: 20),
        const Text('Prevent multiple spaces'),
        TextField(inputFormatters: [NoMultipleSpacesFormatter()]),
        const SizedBox(height: 20),
        const Text('Typing Delay (simulated typing)'),
        TextField(
          controller: typingController,
          onChanged: (value) {
            if (!typingController.text.endsWith(value.characters.last)) {
              typingController.typeCharacter(value.characters.last);
            }
          },
        ),
      ],
    );
  }
}
8
likes
160
points
228
downloads

Publisher

verified publisherksaikiran.tech

Weekly Downloads

A Flutter package with advanced custom TextInputFormatters—simulate typing, block clipboard, allow only palindromes, enforce naming conventions and more.

Repository (GitHub)

Topics

#textinput #inputformatter #validation #typing #formatting

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on advanced_text_input_formatters_codespark