diff --git a/lib/src/responsive_scaled_box.dart b/lib/src/responsive_scaled_box.dart index 4d08675..4ff2485 100644 --- a/lib/src/responsive_scaled_box.dart +++ b/lib/src/responsive_scaled_box.dart @@ -6,11 +6,13 @@ class ResponsiveScaledBox extends StatelessWidget { final double? width; final Widget child; final bool autoCalculateMediaQueryData; + final bool autoScaleUp; const ResponsiveScaledBox( {super.key, required this.width, required this.child, + this.autoScaleUp = false, this.autoCalculateMediaQueryData = true}); @override @@ -20,13 +22,15 @@ class ResponsiveScaledBox extends StatelessWidget { builder: (context, constraints) { MediaQueryData mediaQueryData = MediaQuery.of(context); - double aspectRatio = constraints.maxWidth / constraints.maxHeight; + double availableWidth = constraints.maxWidth; + double availableHeight = constraints.maxHeight; + + double aspectRatio = availableWidth / availableHeight; double scaledWidth = width!; double scaledHeight = width! / aspectRatio; bool overrideMediaQueryData = autoCalculateMediaQueryData && - (mediaQueryData.size == - Size(constraints.maxWidth, constraints.maxHeight)); + (mediaQueryData.size == Size(availableWidth, availableHeight)); EdgeInsets scaledViewInsets = getScaledViewInsets( mediaQueryData: mediaQueryData, @@ -50,6 +54,13 @@ class ResponsiveScaledBox extends StatelessWidget { ), ); + if (autoScaleUp && width! < availableWidth) { + childHolder = Transform.scale( + scale: availableWidth / width!, + child: childHolder, + ); + } + if (overrideMediaQueryData) { return MediaQuery( data: mediaQueryData.copyWith(