getOrBuildAndCacheIcon method

Future<Uint8List> getOrBuildAndCacheIcon({
  1. required String key,
  2. required String assetName,
  3. required double devicePixelRatio,
  4. Size? size = const Size(20, 20),
})

Gets an icon from the cache or builds and caches it if it doesn't exist.

  • key: A unique identifier for the icon.
  • assetName: The path to the SVG asset.
  • devicePixelRatio: The device's pixel ratio for correct scaling.
  • size: The desired size of the icon.

Returns the icon data as a Uint8List.

Implementation

Future<Uint8List> getOrBuildAndCacheIcon({
  required String key,
  required String assetName,
  required double devicePixelRatio,
  Size? size = const Size(20, 20),
}) async {
  // Find existing icon
  CachedIcon? cachedIcon =
      _cachedIconBox.query(CachedIcon_.key.equals(key)).build().findFirst();

  if (cachedIcon != null) {
    return Uint8List.fromList(cachedIcon.bytes);
  }

  // If not found, build and cache it
  final Uint8List bytes = await _svgConverter(
    assetName,
    devicePixelRatio,
    size,
  );
  final newCachedIcon = CachedIcon(key: key, bytes: bytes);
  _cachedIconBox.put(newCachedIcon);
  return bytes;
}