A simple display for BBCode in Flutter. Supports custom tags and styles.
- Render BBCode into nicely readable text
- Support for different styles
- Support for custom tags
- Install the package using the instruction on the installation page.
- That's all! You are ready to start displaying BBCode in Flutter.
A fully working example can be found on Github.
After installing the package displaying BBCode is rather straighforward. When using this code note that you will be using the all default available BBCode parsers.
Widget parsedBBCode = BBCodeText(data: _yourString);
An additional BBStylesheet
can be provided using the stylesheet
to overwrite the default style and tags used. Simply create an instance of BBStylesheet
and add the tags you desire. It's also possible to get the default style and add, replace or remove certain tags.
var changedStyle = BBStyleSheet(tags: [
BoldTag(),
HeaderTag(1, 64)
]);
var extenedStyle = defaultBBStylesheet()
.addTag(YourNewTag())
.replaceTag(HeaderTag(1, 16));
Widget parsedBBCode = BBCodeText(data: _yourString, stylesheet: extendedStyle);
You can create your own tags by extending the AbstractTag
, StyleTag
, WrappedStyleTag
or AdvancedTag
classes. The StyleTag
should be sufficient for most style changes.
The WrappedStyleTag
can be used to wrap a style around the tag. An example of a tag that implements this is the [quote] tag.
- [B] - Bold text
- [I] - Italic text
- [U] - Underlined text
- [S] - Strikethrough text
- [COLOR=#HEX] - Coloured text based on HEX
- [H1] - Header text, supported up till [H6]
- [URL=https://google.com] - Supported with or without text. Can also be used to surround an URL to make it clickable. Default action is a log message. Example using
url_launcher
can be found in the example. - [IMG=src] - Display an image from the internet.
- [QUOTE=Marten] - Used to wrap text in a quote block.
- [SPOILER=Name] - Used to create a clickable spoiler tag.
- [LIST] / [LIST=1] / [UL] / [OL] - Used to create (ordered) lists. Note that items need to be of the form [*]item[/*]
- [LEFT], [CENTER], [RIGHT] - Align the text
Feel free to create issues and pull-requests on Github. I will take a look at them as soon as possible.
Leaving a star is also highly appreciated :)