parseBBCode function
List<InlineSpan>
parseBBCode(
- String data, {
- BBStylesheet? stylesheet,
- dynamic onError(
- Object error,
- StackTrace? stackTrace
Parses BBCode InlineSpan elements. These elements can then be used in a RichText widget.
The stylesheet
is used for parsing. If none is provided defaultBBStylesheet will be used instead.
Additionally an onError
method is available for advanced error handling.
Implementation
List<InlineSpan> parseBBCode(
String data, {
BBStylesheet? stylesheet,
Function(Object error, StackTrace? stackTrace)? onError,
}) {
// Set default style
stylesheet ??= defaultBBStylesheet();
// Use the parser to parse into nodes.
bbob.ParseErrorMessage? errorObject;
final nodes =
bbob.parse(data, validTags: stylesheet.validTags, onError: (parseError) {
errorObject = parseError;
});
if (errorObject != null) {
onError?.call(errorObject!, StackTrace.current);
return [];
}
// Use the FlutterRenderer to convert the nodes into
// InlineSpan widgets.
FlutterRenderer renderer = FlutterRenderer(stylesheet: stylesheet);
late List<InlineSpan> spans;
try {
spans = renderer.render(nodes);
} catch (error, stack) {
onError?.call(error, stack);
return [];
}
// Return the inline spans.
return spans;
}