platformDecorationImage function

BoxDecoration? platformDecorationImage({
  1. required String imageUrl,
  2. BoxFit fit = BoxFit.cover,
  3. ColorFilter? colorFilter,
  4. BorderRadius? borderRadius,
  5. Color? color,
})

Platform-aware BoxDecoration with network image. On web: returns plain decoration (no image) since DecorationImage paints on Canvas which requires CORS. Use a Stack with platformNetworkImage instead for web backgrounds. On mobile: returns BoxDecoration with DecorationImage.

Implementation

BoxDecoration? platformDecorationImage({
  required String imageUrl,
  BoxFit fit = BoxFit.cover,
  ColorFilter? colorFilter,
  BorderRadius? borderRadius,
  Color? color,
}) {
  if (imageUrl.isEmpty) return null;
  if (kIsWeb) {
    // On web, DecorationImage paints on Canvas → CORS error.
    // Return decoration without image; caller should layer
    // platformNetworkImage in a Stack.
    return BoxDecoration(borderRadius: borderRadius, color: color);
  }
  return BoxDecoration(
    borderRadius: borderRadius,
    color: color,
    image: DecorationImage(
      image: CachedNetworkImageProvider(_optimizeGoogleImageUrl(imageUrl)),
      fit: fit,
      colorFilter: colorFilter,
    ),
  );
}