formatRange method
EasyTextChange?
formatRange(
- int index,
- int len,
- EasyAttributeStyles? style, {
- bool overrideStylesIfEmpty = true,
Applies formatting to a range of text starting at index for len characters.
Example:
final text = EasyText.fromStr(text: 'Hello World');
// Formats 'World' as bold
text.formatRange(6, 5, EasyAttributeStyles.fromAttribute(BoldAttribute()));
Implementation
EasyTextChange? formatRange(
int index,
int len,
EasyAttributeStyles? style, {
bool overrideStylesIfEmpty = true,
}) {
if (style == null || len <= 0) {
return null;
}
final int local = math.min<int>(length - index, len);
final int remain = len - local;
final EasyText part = extractAt(index, local);
if (remain > 0 && part.next != null) {
part.next?.formatRange(
0,
remain,
style,
overrideStylesIfEmpty: overrideStylesIfEmpty,
);
}
part.format(
style,
overrideStylesIfEmpty,
);
return EasyTextChange(
start: index,
length: len,
delta: Delta()
..retain(index)
..retain(len, style.toJson()),
inverted: Delta()
..retain(index)
..retain(
len,
// return the equivalent style for remove
style.invert().toJson(),
),
);
}