renderThumbnail method
Implementation
@override
Future<ui.Image?> renderThumbnail(int pageIndex, {int maxSize = 240}) async {
final ui.Image? cached = _thumbnails.get(pageIndex);
if (cached != null) return cached;
try {
final ui.Picture? picture = await renderPage(pageIndex);
final UDocPageInfo info = pageInfo(pageIndex);
if (picture == null) return null;
final Size rotated = info.rotatedSize;
final double scale = rotated.width > rotated.height ? maxSize / rotated.width : maxSize / rotated.height;
final int width = (rotated.width * scale).round().clamp(1, 2048);
final int height = (rotated.height * scale).round().clamp(1, 2048);
final ui.PictureRecorder recorder = ui.PictureRecorder();
final Canvas canvas = Canvas(recorder);
canvas.scale(scale);
canvas.drawPicture(picture);
final ui.Picture scaled = recorder.endRecording();
final ui.Image image = await scaled.toImage(width, height);
scaled.dispose();
_thumbnails.put(pageIndex, image);
return image;
} on Object {
return null;
}
}