Merge branch 'master' into national_day_theme

national_day_theme
FaizHashmi 6 days ago
commit 70e50b34ad

@ -56,8 +56,6 @@ class OccasionBackgroundWidget extends StatelessWidget {
final backgroundImageUrl = occasionThemeVm.backgroundOpacityImage;
final hasBackgroundImage = occasionThemeVm.isOccasionActive && (backgroundImageUrl?.isNotEmpty ?? false);
log("occasionThemeVm.backgroundImageOpacity: ${occasionThemeVm.backgroundImageOpacity}");
if (!hasBackgroundImage) {
return const SizedBox.shrink();
}
@ -65,7 +63,7 @@ class OccasionBackgroundWidget extends StatelessWidget {
return Positioned.fill(
child: Opacity(
opacity: occasionThemeVm.backgroundImageOpacity.clamp(0.0, 1.0),
child: buildOccasionImage(backgroundImageUrl!),
child: buildOccasionImage(backgroundImageUrl!, isNeedPadding: true),
),
);
},
@ -77,24 +75,23 @@ class OccasionBackgroundWidget extends StatelessWidget {
/// Day banner) or a raster image (PNG/JPG). [CachedNetworkImage] cannot
/// decode SVG — it silently renders nothing — so SVG URLs are routed to
/// [SvgPicture.network] instead, based on the URL's file extension.
Widget buildOccasionImage(String url) {
Widget buildOccasionImage(String url, {bool isNeedPadding = false}) {
final isSvg = url.split('?').first.toLowerCase().endsWith('.svg');
if (isSvg) {
return SvgPicture.network(
url,
width: double.infinity,
fit: BoxFit.cover,
fit: BoxFit.contain,
placeholderBuilder: (_) => const SizedBox.shrink(),
);
}
return CachedNetworkImage(
imageUrl: url,
width: double.infinity,
fit: BoxFit.cover,
fit: BoxFit.contain,
placeholder: (_, __) => const SizedBox.shrink(),
errorWidget: (_, __, error) {
log('OccasionImage: failed to load $url -> $error');
return const SizedBox.shrink();
},
);
).paddingSymmetrical(isNeedPadding ? 24.w : 0, 0);
}

Loading…
Cancel
Save