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 (itemRenderer != null && _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;
}