loadTile method
Future<Image?>
loadTile(
- PdfTileKey key, {
- required Rect region,
- required double pixelRatio,
- required int width,
- required int height,
override
Implementation
@override
Future<ui.Image?> loadTile(
PdfTileKey key, {
required ui.Rect region,
required double pixelRatio,
required int width,
required int height,
}) async {
final disk = tiles;
final stats = tileStats;
if (disk == null || documentKey.isEmpty) return null;
try {
final bytes =
await disk.read(_tileKey(key, region, pixelRatio, width, height));
if (bytes == null) {
stats._misses++;
return null;
}
final sw = Stopwatch()..start();
final codec = await ui.instantiateImageCodec(bytes);
try {
final frame = await codec.getNextFrame();
final image = frame.image;
if (image.width != width || image.height != height) {
image.dispose();
stats._errors++;
stats._misses++;
return null;
}
stats._hits++;
stats._bytesRead += bytes.length;
stats._decodeMicros += sw.elapsedMicroseconds;
return image;
} finally {
codec.dispose();
}
} catch (_) {
stats._errors++;
stats._misses++;
return null;
}
}