Search packages, repositories and app categories

Package detailsv3.0.1

rich_text_controller

An extended text editing controller that supports different inline styles for custom regex patterns.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
7.9K
Likes
104
Pub points
160

Install package

flutter pub add rich_text_controller

Package Overview

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

rich_text_controller is a Flutter/Dart package that extends the standard text editing controller to enable inline styling for text based on custom regular expressions. It allows developers to apply different styles—such as colors, fonts, or decorations—to specific patterns within a text field, like hashtags, mentions, or links. Ideal for rich text inputs in messaging apps, note-taking tools, or social media interfaces, it enhances user experience by visually distinguishing structured content. The package supports all major platforms and integrates seamlessly with existing TextEditingController workflows.

Use cases

  • Messaging apps with styled mentions
  • Note-taking apps with syntax highlighting
  • Social media text fields with hashtag styling
  • Custom rich text editors
  • Real-time collaborative editing

Key features

  • Inline styling via regex patterns
  • Support for multiple style types
  • Seamless integration with TextEditingController
  • Cross-platform compatibility
  • Live preview of styled text
  • Configurable pattern matching

Suitable for

  • Developers building rich text input fields
  • Apps requiring dynamic text formatting
  • Projects with user-generated content
  • Teams using regex-based content tagging
  • UIs needing visual distinction of text patterns

Considerations

  • Requires careful regex design to avoid performance issues
  • May increase memory usage with complex patterns
  • Styling logic must be tested across platforms
  • Not suitable for large-scale document editing
  • Limited built-in templates for common use cases

Original README

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

rich_text_controller

Pub Version License Pub Points

rich_text_controller is an extended text editing controller for Flutter that supports applying different inline styles based on custom regex patterns. This package simplifies text styling and interaction in Flutter applications, making it easy to create feature-rich text inputs.


Table of Contents

  1. Demo
  2. Features
  3. Installation
  4. Usage
  5. Contributing
  6. License

Demo

Demo GIF

Features

  • Custom Regex Styling: Apply styles dynamically to text patterns.
  • Interactive Callbacks: Define actions for user interactions with matched text.
  • Dynamic Updates: Modify regex patterns on the fly without recreating the controller.
  • IME Composition Support: Smooth handling for languages like Japanese and Chinese.
  • Performance Optimizations: Cached regex for better performance.
  • RichWrapper Widget: A widget for seamless integration with the controller.
  • Fine-grained Configuration: Control deletion behavior, styles, and tap actions for specific matches.

Installation

  1. Add the package to your pubspec.yaml file:
dependencies:
  rich_text_controller: ^[latest_version]
  1. Run the following command to install the package:
flutter pub get
  1. Import the package into your Dart file:
import 'package:rich_text_controller/rich_text_controller.dart';

Usage

Here's a quick example of how to use RichTextController to style specific patterns in a TextField:

Example
import 'package:flutter/material.dart';
import 'package:rich_text_controller/rich_text_controller.dart';

defaultTextStyle(BuildContext context) => TextStyle(color: Colors.black);

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('RichTextController Example')),
        body: Center(
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: TextField(
              controller: RichTextController(
                text: '',
                onMatch: (match, target) {
                  print('Match found: \$match');
                },
                targetMatches: [
                  MatchTargetItem(
                    textStyle: TextStyle(color: Colors.blue, fontWeight: FontWeight.bold),
                    regex: RegExp(r'#[a-zA-Z0-9_]+'),
                  ),
                  MatchTargetItem(
                    textStyle: TextStyle(color: Colors.green),
                    regex: RegExp(r'@[a-zA-Z0-9_]+'),
                  ),
                ],
              ),
              decoration: InputDecoration(border: OutlineInputBorder()),
            ),
          ),
        ),
      ),
    );
  }
}

Contributing

Contributions are always welcome! Here’s how you can help:

  1. Report bugs or request features via GitHub Issues.
  2. Submit pull requests with well-documented code and examples.
  3. Share your thoughts and ideas to improve the package.

License

Licensed under the MIT License. You are free to use, modify, and distribute this package. See the LICENSE.md file for details.

Categories

Source repository

Projects using this package