cache.dart 867 B

123456789101112131415161718192021222324252627282930313233343536
  1. import 'dart:ui';
  2. import 'package:flutter/painting.dart';
  3. import 'package:quiver/collection.dart';
  4. class TextLayoutCache {
  5. TextLayoutCache(this.textDirection, int maximumSize)
  6. : _cache = LruMap<int, Paragraph>(maximumSize: maximumSize);
  7. final LruMap<int, Paragraph> _cache;
  8. final TextDirection textDirection;
  9. void clear() {
  10. _cache.clear();
  11. }
  12. Paragraph? getLayoutFromCache(int key) {
  13. return _cache[key];
  14. }
  15. Paragraph performAndCacheLayout(String text, TextStyle style, int key) {
  16. final builder = ParagraphBuilder(style.getParagraphStyle());
  17. builder.pushStyle(style.getTextStyle());
  18. builder.addText(text);
  19. final paragraph = builder.build();
  20. paragraph.layout(ParagraphConstraints(width: double.infinity));
  21. _cache[key] = paragraph;
  22. return paragraph;
  23. }
  24. int get length {
  25. return _cache.length;
  26. }
  27. }