getOrProduce method
todo it may make sense to return a clone and dispose that clone at the consumer. The cache may evict an image at any time even if it is still used by the consumer.
Implementation
@override
Future<TilePicture?> getOrProduce(Tile tile, Future<TilePicture?> Function(Tile) producer) async {
final TilePicture? result = await _cache.getOrProduce(tile, producer);
if (result != null) {
_spatialIndex.addTile(tile);
}
return result;
}