newCachingItemRenderer<T> function

ItemRenderer<T> newCachingItemRenderer<T>(
  1. ItemRenderer<T> itemRenderer
)

Returns an ItemRenderer that caches the results of calls. It should be used in Selection widgets.

If the item passed in is already a caching ItemRenderer, it is returned unchanged.

Implementation

ItemRenderer<T> newCachingItemRenderer<T>(ItemRenderer<T> itemRenderer) {
  if (_rendererMarker[itemRenderer] != null) {
    return itemRenderer;
  }
  var cache = <T, String?>{};
  ItemRenderer<T> cachingItemRenderer = (T item) {
    String? value = cache[item];
    if (value == null) {
      value = itemRenderer(item);
      cache[item] = value;
    }
    return value;
  };
  _rendererMarker[cachingItemRenderer] = cachingItemRenderer;

  return cachingItemRenderer;
}