resolve method
List<DiagramMeasuredTextLine>
resolve(
- DiagramParagraphCacheKey key,
- List<
DiagramMeasuredTextLine> build()
Implementation
List<DiagramMeasuredTextLine> resolve(
DiagramParagraphCacheKey key,
List<DiagramMeasuredTextLine> Function() build,
) {
final existing = _entries.remove(key);
if (existing != null) {
_entries[key] = existing;
return existing.lines;
}
final lines = List<DiagramMeasuredTextLine>.unmodifiable(build());
final weight = key.codeUnits;
if (maxEntries == 0 || weight > maxCodeUnits) return lines;
while (_entries.isNotEmpty &&
(_entries.length >= maxEntries || _codeUnits + weight > maxCodeUnits)) {
_codeUnits -= _entries.remove(_entries.keys.first)!.weight;
}
_entries[key] = (lines: lines, weight: weight);
_codeUnits += weight;
return lines;
}