flutter_code_input_fields 1.0.0 copy "flutter_code_input_fields: ^1.0.0" to clipboard
flutter_code_input_fields: ^1.0.0 copied to clipboard

Split box-style text fields controlled by a single controller

Code Input Fields #

A Flutter widget that provides split box-style text input fields controlled by a single controller. Perfect for verification codes, PIN inputs, and other multi-digit input scenarios.

Features #

  • 🔢 Split Box Input: Individual input fields that work as a single unit
  • 🎯 Auto Focus Management: Automatic focus movement between fields
  • 📱 Flexible Configuration: Customizable styling, spacing, and behavior
  • Performance Optimized: Efficient rendering with border caching
  • 🎨 Customizable Design: Border colors, widths, radius, and spacing
  • ⌨️ Keyboard Support: Configurable keyboard types and input formatters

Demo #

CodeInputFields Demo 1
CodeInputFields Demo 2

Installation #

Flutter pub add:

flutter pub add flutter_code_input_fields
copied to clipboard

or

Add this package to your pubspec.yaml:

dependencies:
  flutter_code_input_fields: ^1.0.0
copied to clipboard

Then run:

flutter pub get
copied to clipboard

Usage #

Basic Usage #

import 'package:flutter_code_input_fields/flutter_code_input_fields.dart';

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  final TextEditingController _controller = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return CodeInputFields(
      length: 6,
      controller: _controller,
      onChanged: (value) {
        print('Entered code: $value');
      },
    );
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
}
copied to clipboard

Custom Styling #

CodeInputFields(
  length: 4,
  controller: _controller,
  onChanged: (value) => print('Code: $value'),
  activeBorderColor: Colors.blue,
  enabledBorderColor: Colors.grey,
  borderWidth: 2.0,
  borderRadius: 8.0,
  spacing: 12.0,
  boxWidth: 50.0,
  style: TextStyle(
    fontSize: 18,
    fontWeight: FontWeight.bold,
  ),
)
copied to clipboard

Numeric Input #

CodeInputFields(
  length: 6,
  controller: _controller,
  onChanged: (value) => print('PIN: $value'),
  keyboardType: TextInputType.number,
  inputFormatters: [
    FilteringTextInputFormatter.digitsOnly,
  ],
  activeBorderColor: Colors.green,
  enabledBorderColor: Colors.grey.shade300,
)
copied to clipboard

Auto Focus #

CodeInputFields(
  length: 8,
  controller: _controller,
  onChanged: (value) => print('Code: $value'),
  autofocus: true,
  cursorColor: Colors.blue,
)
copied to clipboard

How It Works #

  • Single Controller: All input fields are managed by one TextEditingController
  • Auto Focus Movement: When 2 characters are entered in a field (except the last), focus automatically moves to the next field
  • Backward Navigation: When a field is cleared, focus moves to the previous field
  • Performance Optimization: Border styles are cached to prevent unnecessary rebuilds

Parameters #

Parameter Description Type Required Default
length Number of input fields (1-8) int -
controller TextEditingController that manages all fields TextEditingController -
onChanged Callback function when text changes void Function(String)? -
keyboardType Keyboard type for input fields TextInputType? null
autofocus Whether to auto-focus on the first field bool? false
style Text style for input fields TextStyle? null
inputFormatters List of input formatters List<TextInputFormatter>? null
activeBorderColor Border color when field has content Color? Colors.blue
enabledBorderColor Border color when field is empty Color? Colors.grey
borderWidth Width of the border double? 2.0
borderRadius Border radius for rounded corners double? 0.0
spacing Spacing between input fields double? 8.0
boxWidth Width of each input field double? 40.0
cursorColor Color of the text cursor Color? null

Contributing #

Contributions are welcome! Please feel free to submit a Pull Request.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

Support #

If you encounter any issues or have questions, please file an issue on the GitHub repository.

3
likes
155
points
19
downloads

Publisher

verified publisherseonwookkim.com

Weekly Downloads

2024.12.08 - 2025.11.02

Split box-style text fields controlled by a single controller

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on flutter_code_input_fields