mapOffsetsToListLengths function
Implementation
List<LineData> mapOffsetsToListLengths(List<int> offsets, int length) {
if (offsets.isEmpty) return [];
if (length < offsets.last) {
throw StateError('Incorrect node length');
}
if (offsets.length == 1) {
return [
LineData(
startOffset: 0,
lineLength: length,
)
];
}
final lengths = offsets.mapIndexed(
(index, currentOffset) {
final nextOffset = offsets.elementAtOrNull(index + 1) ?? length;
return nextOffset - currentOffset;
},
);
return lengths
.mapIndexed(
(index, lineLength) => LineData(
startOffset: offsets[index],
lineLength: lineLength,
),
)
.toList();
}