搜尋套件、儲存庫與 APP 分類

套件詳情v2.0.49

simple_rich_text

使用簡單的富文本字元在Flutter中顯示Dart字串。

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
7740
喜歡數
88
Pub 分數
150

安裝套件

flutter pub add simple_rich_text

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個 Flutter 套件,可在 Dart 字串中實現簡單的富文字渲染,允許使用者使用直覺語法對文字進行基本樣式設定。它透過內嵌字元支援常見的格式化功能,如粗體、斜體和顏色,讓顯示樣式文字變得簡單,無需複雜的元件層級。非常適合需要輕量級、易讀性強的文字格式化且程式碼量最少的應用程式。該套件具備跨平台特性,可在 Android、iOS、Web、macOS、Windows 和 Linux 上順暢運作。

適用情境

  • 顯示格式化的用戶訊息
  • 渲染樣式通知
  • 建立動態文字標籤
  • 在聊天介面中顯示豐富內容
  • 用最少的代碼增強UI

主要特色

  • 基於字元的簡單格式化
  • 跨平台支援
  • 最小化元件嵌套
  • 支援粗體、斜體和顏色
  • 與現有文字元件的輕鬆整合

適合對象

  • 初學者 Flutter 開發者
  • 具有簡單文字樣式需求的應用程式
  • 聊天或訊息介面
  • 輕量級富文字需求
  • 快速原型設計

使用建議

  • 僅限基本格式化
  • 不適合複雜的版面
  • 不支援進階排版
  • 需要小心進行字串轉義
  • 過度使用可能影響可讀性

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

simple_rich_text

Easily format Flutter text with simple format characters.

Motivation: lowest-possible development friction to add color and formatting to text.

In comparison, easy_rich_text requires lots of code (i.e, patternList of EasyRichTextPattern objects).

Format Characters

These are non-standard (not markdown compatible) but are more intuitive, in my opinion:

format character format effect simple_rich_text string input Flutter output
asterisk (*) bold "this is *bold*" this is bold
slash (/) italics "this is /italicized/" this is italicized
underscore (_) underline "this is _underlined_" this is underlined

Example Input

SimpleRichText(r'*_/this is all three*_/ (*{color:red}bold*, _{color:green}underlined_, and /{color:brown}italicized/). _{push:home;color:blue}clickable hyperlink to home screen_')

Example Flutter Output

Screenshot

Attributes

Attribute pairs are placed in curly brackets immediately after first character marker. Each pair is separated by a semicolon (;) and can be in any order. Each pair has syntax name:value.

key meaning implemented Dart code
color red, blue, etc textStyle.color: color-value
pop pop the navigation stack Navigator.pop(context);
push push the value onto the navigation stack Navigator.pushNamed(context, '/$route');
repl replace the top route on the navigation stack Navigator.popAndPushNamed(context, '/$route');

Colors Supported

Change text color by passing color as attribute:

Example

"this is blue hyperlink to the _{color:blue,push:calendar}calendar_ screen"
color:color_value hex value
aqua 0x00FFFF
black 0x000000
blue 0x0000FF
brown 0x9A6324
cream 0xFFFDD0
cyan 0x46f0f0
green 0x00FF00
gray 0x808080
grey 0x808080
mint 0xAAFFC3
lavender 0xE6BEFF
new 0xFFFF00
olive 0x808000
orange 0xFFA500
pink 0xFFE1E6
purple 0x800080
red 0xFF0000
silver 0xC0C0C0
white 0xFFFFFF
yellow 0xFFFF00

Features

  • support text hyperlinks to other screens by preceding formatted text with route inside curly brackets: e.g., "... {calendar}go to calendar screen".

Sample Inputs:

'this is /italic/'

'this is *bold*'

'*_/this is all three*_/ (*bold*, _underlined_, and /italicized/)'

'you can quote characters to NOT format a word \*bold\*'

'this is _underline_'

'go to _{/myroute}home_ page'

'this is ~important~(red).'

'this is _*bold and underlined*_.'

Notes

You can use multiple characters at the same time:

"this is _/underlined and italicized/_"

You can be sloppy! Unlike HTML, for convenience, if using multiple characters the open and closed sequences, they don't need to be in exact palindrome matching order:

"these are */equivalent/* and works without problems."
"these are */equivalent*/ and works without problems."

Requirements

Ancestor MUST have textDirection set (required by internal RichText widget), either through MaterialApp widget or explicitly wrapped by a Directionality widget:

Directionality(
    child: SimpleRichText('Peter', term: 't'),
    textDirection: TextDirection.ltr)

Improvements, Bugs, and Deficiencies

  • [ ] user-definable format characters
  • [ ] user-definable callback functions for custom formatting
  • [ ] support non-named navigation (only pushNamed, etc., supported at present)

Pull Requests

Pull requests are welcome!

Examples

See the example directory.

所屬分類

依賴

依賴清單 1 項

原始碼儲存庫

使用此套件的專案

暫無相關資料。