wrapWithUnicode method
Format text
of a known (if specified) or estimated direction
for use
in plain-text output of the context directionality, so an
opposite-directionality text is neither garbled nor garbles what follows
it. Unlike wrapWithSpan, this makes use of unicode BiDi formatting
characters instead of spans for wrapping. The returned string would be
RLE+text+PDF for RTL text, or LRE+text+PDF for LTR text.
If resetDir
is true, and if the overall directionality or the exit
directionality of text are opposite to the context directionality,
a trailing unicode BiDi mark matching the context directionality is
appended (LRM or RLM).
In HTML, the only valid use of this function is inside of elements that
do not allow markup, e.g. an 'option' tag.
This function does not do HTML-escaping regardless of the value of
isHtml
. isHtml
is used to designate if the text contains HTML (escaped
or unescaped).
Implementation
String wrapWithUnicode(String text,
{bool isHtml: false, bool resetDir: true, TextDirection direction}) {
if (direction == null) direction = estimateDirection(text, isHtml: isHtml);
var result = text;
if (contextDirection.isDirectionChange(direction)) {
var marker = direction == TextDirection.RTL ? Bidi.RLE : Bidi.LRE;
result = "${marker}$text${Bidi.PDF}";
}
return result + (resetDir ? _resetDir(text, direction, isHtml) : '');
}