perf: add memCacheWidth/memCacheHeight to all thumbnail images
All CachedNetworkImage instances in list/card contexts now decode at 2x rendered size instead of full resolution. A 3000x2000 event photo previously decoded to ~24MB in GPU memory even when shown at 96px — now decodes to <1MB. Affected screens (16 CachedNetworkImage instances total): - home_screen.dart: hero (800w), top card (300w), stacked (192w), horizontal (440x360), full-width (800x400), search (112x112), filter sheet (160x160), type icons (112x112) - home_desktop_screen.dart: mini (128x128), grid (600x280), horiz (600x296) - calendar_screen.dart: event card (400x300) - profile_screen.dart: avatar (size*2), event tile (120x120) learn_more_screen.dart intentionally unchanged — full-res for detail view. Estimated memory reduction: ~500MB → ~30MB for a typical home screen.
This commit is contained in:
@@ -170,6 +170,8 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: imageUrl,
|
||||
memCacheWidth: 112,
|
||||
memCacheHeight: 112,
|
||||
fit: BoxFit.contain,
|
||||
placeholder: (_, __) => Icon(
|
||||
icon ?? Icons.category,
|
||||
@@ -343,6 +345,8 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: img,
|
||||
memCacheWidth: 112,
|
||||
memCacheHeight: 112,
|
||||
width: 56,
|
||||
height: 56,
|
||||
fit: BoxFit.cover,
|
||||
@@ -714,6 +718,8 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: imageUrl,
|
||||
memCacheWidth: 160,
|
||||
memCacheHeight: 160,
|
||||
width: 80,
|
||||
height: 80,
|
||||
fit: BoxFit.cover,
|
||||
@@ -1236,6 +1242,7 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
|
||||
img != null && img.isNotEmpty
|
||||
? CachedNetworkImage(
|
||||
imageUrl: img,
|
||||
memCacheWidth: 800,
|
||||
fit: BoxFit.cover,
|
||||
placeholder: (_, __) => const _HeroShimmer(radius: radius),
|
||||
errorWidget: (_, __, ___) =>
|
||||
@@ -1597,6 +1604,7 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
|
||||
img != null && img.isNotEmpty
|
||||
? CachedNetworkImage(
|
||||
imageUrl: img,
|
||||
memCacheWidth: 300,
|
||||
fit: BoxFit.cover,
|
||||
width: double.infinity,
|
||||
height: double.infinity,
|
||||
@@ -1790,6 +1798,7 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
|
||||
child: img != null && img.isNotEmpty
|
||||
? CachedNetworkImage(
|
||||
imageUrl: img,
|
||||
memCacheWidth: 192,
|
||||
width: 96,
|
||||
height: double.infinity,
|
||||
fit: BoxFit.cover,
|
||||
@@ -1855,6 +1864,8 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
|
||||
child: img != null && img.isNotEmpty
|
||||
? CachedNetworkImage(
|
||||
imageUrl: img,
|
||||
memCacheWidth: 440,
|
||||
memCacheHeight: 360,
|
||||
width: 220,
|
||||
height: 180,
|
||||
fit: BoxFit.cover,
|
||||
@@ -2026,6 +2037,8 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
|
||||
child: img != null && img.isNotEmpty
|
||||
? CachedNetworkImage(
|
||||
imageUrl: img,
|
||||
memCacheWidth: 800,
|
||||
memCacheHeight: 400,
|
||||
width: double.infinity,
|
||||
height: 200,
|
||||
fit: BoxFit.cover,
|
||||
|
||||
Reference in New Issue
Block a user