newCachingItemRenderer<T> function
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;
}