import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'dart:ui' as ui; BitmapDescriptor? assetMarker; BitmapDescriptor? locMarker; Future loadBitmapDescriptors(context) async { assetMarker = await bitmapDescriptorFromSvgAsset(context, 'assets/icons/address_filled.svg'); // locMarker = await bitmapDescriptorFromSvgAsset(context, 'assets/icons/address_filled.svg'); } Future bitmapDescriptorFromSvgAsset(BuildContext context, String assetName) async { String svgString = await DefaultAssetBundle.of(context).loadString(assetName); //Draws string representation of svg to DrawableRoot DrawableRoot svgDrawableRoot = await svg.fromSvgString(svgString, ""); ui.Picture picture = svgDrawableRoot.toPicture(); ui.Image image = await picture.toImage(70, 90); ByteData? bytes = await image.toByteData(format: ui.ImageByteFormat.png); if(bytes!=null){ return BitmapDescriptor.fromBytes(bytes.buffer.asUint8List()); }else{ log("error mapping marker"); return null; } }