rebuild method
void
rebuild(
{ - required int lineCount,
- required double height,
- Set<int> foldedLines = const {},
})
Implementation
void rebuild({
required int lineCount,
required double height,
Set<int> foldedLines = const {},
}) {
if (lineCount <= 0) {
_root = _LayoutLeaf();
return;
}
final leaves = <_LayoutNode>[];
for (var start = 0; start < lineCount; start += _LayoutLeaf._capacity) {
final end = math.min(start + _LayoutLeaf._capacity, lineCount);
leaves.add(
_LayoutLeaf([
for (var line = start; line < end; line++)
_LineBlock(height, foldedLines.contains(line)),
]),
);
}
var level = leaves;
while (level.length > _nodeCapacity) {
final nextLevel = <_LayoutNode>[];
for (var start = 0; start < level.length; start += _nodeCapacity) {
nextLevel.add(
_LayoutInternal(
level.sublist(start, math.min(start + _nodeCapacity, level.length)),
),
);
}
level = nextLevel;
}
_root = level.length == 1 ? level.single : _LayoutInternal(level);
}