getBitmapDescriptorFromSvgAsset function
Converts an SVG asset into a Uint8List of PNG data.
assetName: The path to the SVG asset.devicePixelRatio: The device's pixel ratio for correct scaling.size: The desired size of the output image. Defaults to 20x20 if not provided.
Returns a Future<Uint8List> containing the PNG data.
Implementation
Future<Uint8List> getBitmapDescriptorFromSvgAsset(
  String assetName,
  double devicePixelRatio, [
  Size? size,
]) async {
  final effectiveSize = size ?? const Size(20, 20);
  final pictureInfo = await vg.loadPicture(SvgAssetLoader(assetName), null);
  int width = (effectiveSize.width * devicePixelRatio).toInt();
  int height = (effectiveSize.height * devicePixelRatio).toInt();
  final scaleFactor = min(
    width / pictureInfo.size.width,
    height / pictureInfo.size.height,
  );
  final recorder = ui.PictureRecorder();
  ui.Canvas(recorder)
    ..scale(scaleFactor)
    ..drawPicture(pictureInfo.picture);
  final rasterPicture = recorder.endRecording();
  final image = await rasterPicture.toImage(width, height);
  final bytes = (await image.toByteData(format: ui.ImageByteFormat.png))!;
  return bytes.buffer.asUint8List();
}