diff --git a/lib/widgets/expandable_image.dart b/lib/widgets/expandable_image.dart index fdfabff..ddcffd8 100644 --- a/lib/widgets/expandable_image.dart +++ b/lib/widgets/expandable_image.dart @@ -1,7 +1,7 @@ +import "dart:math"; import "package:cross_cache/cross_cache.dart"; import "package:flutter/material.dart"; import "package:hooks_riverpod/hooks_riverpod.dart"; -import "package:m3e_buttons/m3e_buttons.dart"; import "package:nexus/controllers/cross_cache_controller.dart"; import "package:nexus/helpers/extensions/get_headers.dart"; import "package:nexus/widgets/error_dialog.dart"; @@ -17,39 +17,30 @@ class ExpandableImage extends ConsumerWidget { ? null : () => showDialog( context: context, - builder: (_) => SafeArea( - child: Stack( - children: [ - Positioned.fill( - child: GestureDetector( - onTap: Navigator.of(context).pop, - child: InteractiveViewer( - maxScale: 10, - child: Image( - errorBuilder: (_, error, stackTrace) => ErrorDialog( - "Loading failed for $source\nError: $error", - stackTrace, - ), - image: CachedNetworkImage( - source!, - ref.watch(CrossCacheController.provider), - headers: ref.headers, - ), - ), + builder: (_) => LayoutBuilder( + builder: (context, constraints) => Dialog( + backgroundColor: Colors.transparent, + insetPadding: .all(constraints.maxWidth / 100), + child: InteractiveViewer( + maxScale: 5, + child: ConstrainedBox( + constraints: .new( + minWidth: min(constraints.maxWidth, 1000), + ), + child: Image( + fit: .contain, + errorBuilder: (_, error, stackTrace) => ErrorDialog( + "Loading failed for $source\nError: $error", + stackTrace, + ), + image: CachedNetworkImage( + source!, + ref.watch(CrossCacheController.provider), + headers: ref.headers, ), ), ), - Align( - alignment: .topRight, - child: Padding( - padding: .all(32), - child: M3EButton( - onPressed: Navigator.of(context).pop, - child: Icon(Icons.close), - ), - ), - ), - ], + ), ), ), ),