Pakete, Repositories und App-Kategorien suchen

Cover von easy_rich_text
Paketdetailsv2.2.0

easy_rich_text

Das EasyRichText-Widget bietet eine einfache Möglichkeit, RichText zu verwenden. Sie müssen die Zeichenkette nicht manuell aufteilen.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
31.600
Likes
250
Pub-Punkte
130

Paket installieren

flutter pub add easy_rich_text

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

EasyRichText vereinfacht die Verwendung von RichText in Flutter, indem es die Textsegmentierung und Formatierung automatisch behandelt, ohne dass man Strings manuell aufteilen muss. Es ermöglicht Entwicklern, verschiedene Stile, Farben und Widgets direkt innerhalb einer einzigen Textzeichenkette mit einfacher Syntax anzuwenden. Ideal für die Anzeige formatierter Texte mit gemischten Stilen wie Links, Erwähnungen oder Emojis, reduziert es Boilerplate-Code und verbessert die Lesbarkeit. Das Paket unterstützt alle wichtigen Plattformen, einschließlich Mobilgeräte, Web und Desktop.

Anwendungsfälle

  • Stilisierten Text mit gemischter Formatierung anzeigen
  • Reichhaltigen Text mit eingebetteten Links erstellen
  • Schlüsselwörter im Text hervorheben
  • Rendern von benutzererzeugtem Inhalt mit Stilen
  • Emojis innerhalb formatierten Textes hinzufügen

Hauptmerkmale

  • Automatische Textsegmentierung
  • Unterstützung für Inline-Styling
  • Einfache Syntax für komplexe Formatierung
  • Plattformübergreifende Kompatibilität
  • Minimale Boilerplate-Code

Geeignet für

  • Entwickler, die eine einfache Rich-Text-Anzeige suchen
  • Apps mit dynamischen oder vom Nutzer erstellten Inhalten
  • Chat- oder Nachrichten-Schnittstellen
  • Dokumentation oder Hilfesysteme mit formatiertem Text

Hinweise

  • Eingeschränkt auf grundlegende Formatierung im Vergleich zu vollständigem RichText
  • Kann bei sehr großen Texten die Leistung beeinträchtigen
  • Erfordert sorgfältige Behandlung verschachtelter Widgets
  • Nicht ideal für sehr komplexe Layouts
  • Abhängig von Updates externer Bibliotheken für neue Funktionen

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

easy_rich_text

pub package GitHub license GitHub stars

The EasyRichText widget makes the RichText widget easy. You do not have to split the string manually.

This widget use regular expression to effectively split the string based on the patterns defined in the list of EasyRichTextPattern.

The EasyRichTextPattern is a class defines the text pattern you want to format.

targetString can be a String or a List<String>.

By default matchWordBoundaries:true is set to match the whole word. If you want to match substring in a word, set matchWordBoundaries:false

GestureRecognizer and url_launcher are integrated.

If you find this package useful, I would appreciate it if you can give me a star on Github and a like on pub.dev

Getting Started

Installing:
dependencies:
  easy_rich_text: '^2.0.0'
Examples:

Simple Example | Trademark Example | Default Style | Conditional Match | Match Option | Superscript and Subscript | Case Sensitivity | Selectable Text | Regular Expression | Url Launcher | GestureRecognizer | All RichText Properties | Special Characters | WhatsApp Like Text Formatter

Simple Example:

alt text

EasyRichText(
  "I want blue font. I want bold font. I want italic font.",
  patternList: [
    EasyRichTextPattern(
      targetString: 'blue',
      style: TextStyle(color: Colors.blue),
    ),
    EasyRichTextPattern(
      targetString: 'bold',
      style: TextStyle(fontWeight: FontWeight.bold),
    ),
    EasyRichTextPattern(
      targetString: 'italic',
      style: TextStyle(fontStyle: FontStyle.italic),
    ),
  ],
),
Trademark Example

alt text

EasyRichText(
  "ProductTM is a superscript trademark symbol. This TM is not a trademark.",
  patternList: [
    EasyRichTextPattern(
      targetString: 'TM',
      superScript: true,
      stringBeforeTarget: 'Product',
      matchWordBoundaries: false,
      style: TextStyle(color: Colors.blue),
    ),
  ],
),
Default Style:

alt text

EasyRichText(
  "This is a EasyRichText example with default grey font. I want blue font here.",
  defaultStyle: TextStyle(color: Colors.grey),
  patternList: [
    EasyRichTextPattern(
      targetString: 'blue',
      style: TextStyle(color: Colors.blue),
    ),
    EasyRichTextPattern(
      targetString: 'bold',
      style: TextStyle(fontWeight: FontWeight.bold),
    ),
  ],
),
Conditional Match

alt text

EasyRichText(
  "I want blue color here. I want no blue font here. I want blue invalid here.",
  patternList: [
    EasyRichTextPattern(
      targetString: 'blue',
      stringBeforeTarget: 'want',
      stringAfterTarget: "color",
      style: TextStyle(color: Colors.blue),
    ),
  ],
),
Match Option

alt text

matchOption can be a string or a list. default is 'all'.
string: 'all', 'first', 'last'
List:'first', 'last', and any integer index
For example, [0, 1, 'last'] will match the first, second, and last one.
EasyRichText(
  "blue 1, blue 2, blue 3, blue 4, blue 5",
  patternList: [
    EasyRichTextPattern(
      targetString: 'blue',
      //matchOption: 'all'
      matchOption: [0, 1, 'last'],
      style: TextStyle(color: Colors.blue),
    ),
  ],
),
Superscript and Subscript.

alt text

EasyRichText(
  "I want superscript font here. I want subscript here",
  patternList: [
    EasyRichTextPattern(
        targetString: 'superscript', superScript: true),
    EasyRichTextPattern(
        targetString: 'subscript', subScript: true),
  ],
),
Case Sensitivity

alt text

EasyRichText(
  "Case-Insensitive String Matching. I want both Blue and blue. This paragraph is selectable.",
  caseSensitive: false,
  selectable: true,
  patternList: [
    EasyRichTextPattern(
      targetString: 'Blue',
      style: TextStyle(color: Colors.blue),
    ),
  ],
),
Selectable Text

alt text

EasyRichText(
  "This paragraph is selectable...",
  selectable: true,
),
Regular Expression

alt text

EasyRichText(
  "Regular Expression. I want blue bluea blue1 but not blueA",
  patternList: [
    EasyRichTextPattern(
      targetString: 'bl[a-z0-9]*',
      style: TextStyle(color: Colors.blue),
    ),
  ],
),
Url Launcher

Integrated with url_launcher. Web url, email url, and telephone url are supported. Set urlType : 'web', 'email', or 'tel'. EasyRichText provides regular expression formula to match common urls.

alt text

EasyRichText(
  "Here is a website https://pub.dev/packages/easy_rich_text. Here is a email address test@example.com. Here is a telephone number +852 12345678.",
  patternList: [
    EasyRichTextPattern(
      targetString: 'https://pub.dev/packages/easy_rich_text',
      urlType: 'web',
      style: TextStyle(
        decoration: TextDecoration.underline,
      ),
    ),
    EasyRichTextPattern(
      targetString: EasyRegexPattern.emailPattern,
      urlType: 'email',
      style: TextStyle(
        decoration: TextDecoration.underline,
      ),
    ),
    EasyRichTextPattern(
      targetString: EasyRegexPattern.webPattern,
      urlType: 'web',
      style: TextStyle(
        decoration: TextDecoration.underline,
      ),
    ),
    EasyRichTextPattern(
      targetString: EasyRegexPattern.telPattern,
      urlType: 'tel',
      style: TextStyle(
        decoration: TextDecoration.underline,
      ),
    ),
  ],
),
GestureRecognizer
///GestureRecognizer, not working when superscript, subscript, or urlType is set.
///TapGestureRecognizer, MultiTapGestureRecognizer, etc.
EasyRichText(
  "Tap recognizer to print this sentence.",
  patternList: [
    EasyRichTextPattern(
      targetString: 'recognizer',
      recognizer: TapGestureRecognizer()
        ..onTap = () {
          print("Tap recognizer to print this sentence.");
        },
      style: TextStyle(
        decoration: TextDecoration.underline,
      ),
    ),
  ],
),
All RichText Properties

alt text

EasyRichText(
  "TextOverflow.ellipsis, TextAlign.justify, maxLines: 1. TextOverflow.ellipsis, TextAlign.justify, maxLines: 1.",
  textAlign: TextAlign.justify,
  maxLines: 1,
  overflow: TextOverflow.ellipsis,
),
Special Characters

alt text

//if the targetString contains the following special characters \[]()^*+?
EasyRichText(
  "Received 88+ messages. Received 99+ messages",
  patternList: [
    //set hasSpecialCharacters to true
    EasyRichTextPattern(
      targetString: '99+',
      hasSpecialCharacters: true,
      style: TextStyle(color: Colors.blue),
    ),
    //or if you are familiar with regular expressions, then use \\ to skip it
    EasyRichTextPattern(
      targetString: '88\\+',
      style: TextStyle(color: Colors.blue),
    ),
  ],
),
WhatsApp Like Text Formatter

alt text

///WhatsApp like text formatter
EasyRichText(
  "TEST *bold font*. test *boldfont*.",
  patternList: [
    ///bold font
    EasyRichTextPattern(
      targetString: '(\\*)(.*?)(\\*)',
      matchBuilder: (BuildContext context, RegExpMatch? match) {
        return TextSpan(
          text: match?[0]?.replaceAll('*', ''),
          style: const TextStyle(fontWeight: FontWeight.bold),
        );
      },
    ),
  ],
),
prefixInlineSpan & suffixInlineSpan
///add icon before/after targetString
EasyRichText(
  "Please contact us at +123456789",
  patternList: [
    EasyRichTextPattern(
      targetString: EasyRegexPattern.telPattern,
      prefixInlineSpan: WidgetSpan(
        child: Icon(Icons.local_phone),
      ),
      suffixInlineSpan: WidgetSpan(
        child: Icon(Icons.local_phone),
      ),
    )
  ],
),

Kategorien

Abhängigkeiten

Abhängigkeiten 1 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden