Skip to content

Commit 4efcaa7

Browse files
rajveermalviyagnprice
authored andcommitted
lightbox: Display thumbnail with original image sizing
Fixes: #830
1 parent 4ef5973 commit 4efcaa7

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

lib/widgets/content.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,9 @@ class MessageImage extends StatelessWidget {
576576
context: context,
577577
message: message,
578578
src: resolvedSrcUrl,
579-
thumbnailUrl: resolvedThumbnailUrl));
579+
thumbnailUrl: resolvedThumbnailUrl,
580+
originalWidth: node.originalWidth,
581+
originalHeight: node.originalHeight));
580582
},
581583
child: node.loading
582584
? const CupertinoActivityIndicator()

lib/widgets/lightbox.dart

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,16 @@ class _ImageLightboxPage extends StatefulWidget {
217217
required this.message,
218218
required this.src,
219219
required this.thumbnailUrl,
220+
required this.originalWidth,
221+
required this.originalHeight,
220222
});
221223

222224
final Animation<double> routeEntranceAnimation;
223225
final Message message;
224226
final Uri src;
225227
final Uri? thumbnailUrl;
228+
final double? originalWidth;
229+
final double? originalHeight;
226230

227231
@override
228232
State<_ImageLightboxPage> createState() => _ImageLightboxPageState();
@@ -259,8 +263,14 @@ class _ImageLightboxPageState extends State<_ImageLightboxPage> {
259263
if (frame != null) return child;
260264

261265
// Display the thumbnail image while original image is downloading.
262-
return RealmContentNetworkImage(widget.thumbnailUrl!,
263-
filterQuality: FilterQuality.medium);
266+
return FittedBox(
267+
fit: BoxFit.scaleDown,
268+
child: SizedBox(
269+
width: widget.originalWidth,
270+
height: widget.originalHeight,
271+
child: RealmContentNetworkImage(widget.thumbnailUrl!,
272+
filterQuality: FilterQuality.medium,
273+
fit: BoxFit.contain)));
264274
}
265275

266276
Widget _loadingBuilder(BuildContext context, Widget child, ImageChunkEvent? loadingProgress) {
@@ -301,11 +311,7 @@ class _ImageLightboxPageState extends State<_ImageLightboxPage> {
301311
child: RealmContentNetworkImage(widget.src,
302312
filterQuality: FilterQuality.medium,
303313
frameBuilder: _frameBuilder,
304-
loadingBuilder: _loadingBuilder),
305-
),
306-
),
307-
),
308-
));
314+
loadingBuilder: _loadingBuilder))))));
309315
}
310316
}
311317

@@ -572,6 +578,8 @@ Route<void> getImageLightboxRoute({
572578
required Message message,
573579
required Uri src,
574580
required Uri? thumbnailUrl,
581+
required double? originalWidth,
582+
required double? originalHeight,
575583
}) {
576584
return _getLightboxRoute(
577585
accountId: accountId,
@@ -581,7 +589,9 @@ Route<void> getImageLightboxRoute({
581589
routeEntranceAnimation: animation,
582590
message: message,
583591
src: src,
584-
thumbnailUrl: thumbnailUrl);
592+
thumbnailUrl: thumbnailUrl,
593+
originalWidth: originalWidth,
594+
originalHeight: originalHeight);
585595
});
586596
}
587597

test/widgets/lightbox_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ void main() {
216216
message: message ?? eg.streamMessage(),
217217
src: src,
218218
thumbnailUrl: thumbnailUrl,
219+
originalHeight: null,
220+
originalWidth: null,
219221
));
220222
await tester.pump(); // per-account store
221223
await tester.pump(const Duration(milliseconds: 301)); // nav transition

0 commit comments

Comments
 (0)